browse: loading and refreshing
This commit is contained in:
parent
30ace2df9b
commit
faa120bd99
2
.nanpa/ebony-fetal-ream.kdl
Normal file
2
.nanpa/ebony-fetal-ream.kdl
Normal file
@ -0,0 +1,2 @@
|
||||
patch type="added" "loading indicator on browse"
|
||||
patch type="added" "refresh button on browse"
|
||||
@ -36,7 +36,7 @@ func NewBrowse() *Browse {
|
||||
return &Browse{
|
||||
title,
|
||||
ui.NewList(list, 0),
|
||||
"↑↓/kj move ↵ enter q return",
|
||||
"↑↓/kj move ↵ enter r refresh q return",
|
||||
posts,
|
||||
}
|
||||
}
|
||||
@ -57,6 +57,16 @@ func (browse *Browse) Event(state *ui.State, event vaxis.Event) (processed bool)
|
||||
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
|
||||
i, _ := strconv.Atoi(key.String())
|
||||
browse.list.SetIndex(i)
|
||||
case "r":
|
||||
ready := false
|
||||
go func() {
|
||||
b := NewBrowse()
|
||||
ready = true
|
||||
ui.ViewChange <- b
|
||||
}()
|
||||
if !ready {
|
||||
ui.ViewChange <- NewLoading("refreshing entries…")
|
||||
}
|
||||
case "q", "h", "Left":
|
||||
ui.ViewChange <- NewMainMenu(3)
|
||||
case "Enter", "l", "Right":
|
||||
@ -79,5 +89,5 @@ func (browse *Browse) Draw(state *ui.State) {
|
||||
Width: 50,
|
||||
Height: 10,
|
||||
})
|
||||
win.New(win.Width/2-15, win.Height/2+9, 30, 1).Print(vaxis.Segment{Text: browse.help})
|
||||
win.New(win.Width/2-20, win.Height/2+9, 41, 1).Print(vaxis.Segment{Text: browse.help})
|
||||
}
|
||||
|
||||
31
app/loading.go
Normal file
31
app/loading.go
Normal file
@ -0,0 +1,31 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"git.sr.ht/~rockorager/vaxis"
|
||||
"git.tilde.town/nbsp/neofeels/ui"
|
||||
)
|
||||
|
||||
type Loading struct {
|
||||
title string
|
||||
text string
|
||||
}
|
||||
|
||||
func NewLoading(text string) *Loading {
|
||||
return &Loading{title, text}
|
||||
}
|
||||
|
||||
func (loading *Loading) Event(state *ui.State, event vaxis.Event) (processed bool) {
|
||||
if key, ok := event.(vaxis.Key); ok && key.EventType == vaxis.EventPress {
|
||||
switch key.String() {
|
||||
case "Ctrl+c", "Ctrl+d":
|
||||
close(ui.Quit)
|
||||
case "Enter", "q", "h", "l", "Left", "Right":
|
||||
ui.ViewChange <- NewMainMenu(3)
|
||||
}
|
||||
processed = true
|
||||
}
|
||||
win := state.Window()
|
||||
win.New(win.Width/2-10, win.Height/2-8, 20, 5).Print(vaxis.Segment{Text: loading.title})
|
||||
win.New((win.Width-len(loading.text))/2, win.Height/2-2, len(loading.text), 2).Print(vaxis.Segment{Text: loading.text})
|
||||
return
|
||||
}
|
||||
10
app/menu.go
10
app/menu.go
@ -120,7 +120,15 @@ func (menu *MainMenu) Event(state *ui.State, event vaxis.Event) (processed bool)
|
||||
case 2:
|
||||
ui.ViewChange <- NewNeighbors(0)
|
||||
case 3:
|
||||
ui.ViewChange <- NewBrowse()
|
||||
ready := false
|
||||
go func() {
|
||||
b := NewBrowse()
|
||||
ready = true
|
||||
ui.ViewChange <- b
|
||||
}()
|
||||
if !ready {
|
||||
ui.ViewChange <- NewLoading("loading entries…")
|
||||
}
|
||||
case 4:
|
||||
ui.ViewChange <- NewSubscriptions(0)
|
||||
case 5:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user