aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2019-07-31 09:50:07 +0200
committerDrew DeVault <sir@cmpwn.com>2019-08-02 09:26:10 -0400
commit9570f4b4d0cdf525ce1695971636a0b58f1a091b (patch)
tree4a6d8773945d43ef8db4b8e8b298be306c822081
parent04ccbd09b1f9369949b89b4815752d08a0ca9786 (diff)
downloadaerc-9570f4b4d0cdf525ce1695971636a0b58f1a091b.tar.gz
msglist: add initialization state
Make the msglist aware of whether we are still initializing or not. We never stopped spinning the msglist if we didn't get any Directories back from types.ListDirectories. With this change, we can set the init state from the account and display the spinner only if we don't know whether we have directories or not and else the "no messages" string from the config.
-rw-r--r--widgets/account.go2
-rw-r--r--widgets/msglist.go46
2 files changed, 33 insertions, 15 deletions
diff --git a/widgets/account.go b/widgets/account.go
index de81ab85..07b50102 100644
--- a/widgets/account.go
+++ b/widgets/account.go
@@ -147,6 +147,8 @@ func (acct *AccountView) connected(msg types.WorkerMessage) {
if dir != "" {
acct.dirlist.Select(dir)
}
+
+ acct.msglist.SetInitDone()
acct.logger.Println("Connected.")
acct.host.SetStatus("Connected.")
})
diff --git a/widgets/msglist.go b/widgets/msglist.go
index abf69212..9900a32c 100644
--- a/widgets/msglist.go
+++ b/widgets/msglist.go
@@ -16,20 +16,22 @@ import (
type MessageList struct {
ui.Invalidatable
- conf *config.AercConfig
- logger *log.Logger
- height int
- scroll int
- nmsgs int
- spinner *Spinner
- store *lib.MessageStore
+ conf *config.AercConfig
+ logger *log.Logger
+ height int
+ scroll int
+ nmsgs int
+ spinner *Spinner
+ store *lib.MessageStore
+ isInitalizing bool
}
func NewMessageList(conf *config.AercConfig, logger *log.Logger) *MessageList {
ml := &MessageList{
- conf: conf,
- logger: logger,
- spinner: NewSpinner(),
+ conf: conf,
+ logger: logger,
+ spinner: NewSpinner(),
+ isInitalizing: true,
}
ml.spinner.OnInvalidate(func(_ ui.Drawable) {
ml.Invalidate()
@@ -49,8 +51,14 @@ func (ml *MessageList) Draw(ctx *ui.Context) {
store := ml.Store()
if store == nil {
- ml.spinner.Draw(ctx)
- return
+ if ml.isInitalizing {
+ ml.spinner.Draw(ctx)
+ return
+ } else {
+ ml.spinner.Stop()
+ ml.drawEmptyMessage(ctx)
+ return
+ }
}
var (
@@ -111,9 +119,7 @@ func (ml *MessageList) Draw(ctx *ui.Context) {
}
if len(uids) == 0 {
- msg := ml.conf.Ui.EmptyMessage
- ctx.Printf((ctx.Width()/2)-(len(msg)/2), 0,
- tcell.StyleDefault, "%s", msg)
+ ml.drawEmptyMessage(ctx)
}
if len(needsHeaders) != 0 {
@@ -171,6 +177,10 @@ func (ml *MessageList) SetStore(store *lib.MessageStore) {
ml.Invalidate()
}
+func (ml *MessageList) SetInitDone() {
+ ml.isInitalizing = false
+}
+
func (ml *MessageList) Store() *lib.MessageStore {
return ml.store
}
@@ -209,3 +219,9 @@ func (ml *MessageList) Scroll() {
}
ml.Invalidate()
}
+
+func (ml *MessageList) drawEmptyMessage(ctx *ui.Context) {
+ msg := ml.conf.Ui.EmptyMessage
+ ctx.Printf((ctx.Width()/2)-(len(msg)/2), 0,
+ tcell.StyleDefault, "%s", msg)
+}