Detect when stash and news loading fails (and update the UI accordingly)

This commit is contained in:
Christian Rocha 2020-07-17 12:25:40 -04:00 committed by Christian Muehlhaeuser
parent a35d83d5d2
commit 3b3bf684f9
3 changed files with 34 additions and 3 deletions

19
Makefile Normal file
View file

@ -0,0 +1,19 @@
# This Makefile is just for development purposes
.PHONY: default clean glow run log
default: glow
clean:
rm -f ./glow
glow:
go build
run: clean glow
./glow
log:
GLOW_UI_LOGFILE=debug.log
> debug.log
tail -f debug.log

View file

@ -219,6 +219,16 @@ func stashUpdate(msg tea.Msg, m stashModel) (stashModel, tea.Cmd) {
case errMsg:
m.err = msg
case stashLoadErrMsg:
m.err = msg.err
m.loaded |= loadedStash // still done, albeit unsuccessfully
m.stashFullyLoaded = true
m.loadingFromNetwork = false
case newsLoadErrMsg:
m.err = msg.err
m.loaded |= loadedNews // still done, albeit unsuccessfully
// We're finished searching for local files
case localFileSearchFinished:
m.loaded |= loadedLocalFiles

View file

@ -37,7 +37,7 @@ func NewProgram(style string, cfg UIConfig) *tea.Program {
if config.Logfile != "" {
log.Println("-- Starting Glow ----------------")
log.Printf("High performance pager: %v", cfg.HighPerformancePager)
log.Printf("Render with Glamour: %v", cfg.GlamourEnabled)
log.Printf("Glamour rendering: %v", cfg.GlamourEnabled)
log.Println("Bubble Tea now initializing...")
}
return tea.NewProgram(initialize(style), update, view)
@ -57,7 +57,9 @@ type initLocalFileSearchMsg struct {
type foundLocalFileMsg string
type localFileSearchFinished struct{}
type gotStashMsg []*charm.Markdown
type stashLoadErrMsg struct{ err error }
type gotNewsMsg []*charm.Markdown
type newsLoadErrMsg struct{ err error }
// MODEL
@ -398,7 +400,7 @@ func loadStash(m stashModel) tea.Cmd {
return func() tea.Msg {
stash, err := m.cc.GetStash(m.page)
if err != nil {
return errMsg(err)
return stashLoadErrMsg{err: err}
}
return gotStashMsg(stash)
}
@ -408,7 +410,7 @@ func loadNews(m stashModel) tea.Cmd {
return func() tea.Msg {
news, err := m.cc.GetNews(1) // just fetch the first page
if err != nil {
return errMsg(err)
return newsLoadErrMsg{err: err}
}
return gotNewsMsg(news)
}