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.
This commit is contained in:
parent
04ccbd09b1
commit
9570f4b4d0
|
@ -147,6 +147,8 @@ func (acct *AccountView) connected(msg types.WorkerMessage) {
|
||||||
if dir != "" {
|
if dir != "" {
|
||||||
acct.dirlist.Select(dir)
|
acct.dirlist.Select(dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
acct.msglist.SetInitDone()
|
||||||
acct.logger.Println("Connected.")
|
acct.logger.Println("Connected.")
|
||||||
acct.host.SetStatus("Connected.")
|
acct.host.SetStatus("Connected.")
|
||||||
})
|
})
|
||||||
|
|
|
@ -16,20 +16,22 @@ import (
|
||||||
|
|
||||||
type MessageList struct {
|
type MessageList struct {
|
||||||
ui.Invalidatable
|
ui.Invalidatable
|
||||||
conf *config.AercConfig
|
conf *config.AercConfig
|
||||||
logger *log.Logger
|
logger *log.Logger
|
||||||
height int
|
height int
|
||||||
scroll int
|
scroll int
|
||||||
nmsgs int
|
nmsgs int
|
||||||
spinner *Spinner
|
spinner *Spinner
|
||||||
store *lib.MessageStore
|
store *lib.MessageStore
|
||||||
|
isInitalizing bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMessageList(conf *config.AercConfig, logger *log.Logger) *MessageList {
|
func NewMessageList(conf *config.AercConfig, logger *log.Logger) *MessageList {
|
||||||
ml := &MessageList{
|
ml := &MessageList{
|
||||||
conf: conf,
|
conf: conf,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
spinner: NewSpinner(),
|
spinner: NewSpinner(),
|
||||||
|
isInitalizing: true,
|
||||||
}
|
}
|
||||||
ml.spinner.OnInvalidate(func(_ ui.Drawable) {
|
ml.spinner.OnInvalidate(func(_ ui.Drawable) {
|
||||||
ml.Invalidate()
|
ml.Invalidate()
|
||||||
|
@ -49,8 +51,14 @@ func (ml *MessageList) Draw(ctx *ui.Context) {
|
||||||
|
|
||||||
store := ml.Store()
|
store := ml.Store()
|
||||||
if store == nil {
|
if store == nil {
|
||||||
ml.spinner.Draw(ctx)
|
if ml.isInitalizing {
|
||||||
return
|
ml.spinner.Draw(ctx)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
ml.spinner.Stop()
|
||||||
|
ml.drawEmptyMessage(ctx)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -111,9 +119,7 @@ func (ml *MessageList) Draw(ctx *ui.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(uids) == 0 {
|
if len(uids) == 0 {
|
||||||
msg := ml.conf.Ui.EmptyMessage
|
ml.drawEmptyMessage(ctx)
|
||||||
ctx.Printf((ctx.Width()/2)-(len(msg)/2), 0,
|
|
||||||
tcell.StyleDefault, "%s", msg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(needsHeaders) != 0 {
|
if len(needsHeaders) != 0 {
|
||||||
|
@ -171,6 +177,10 @@ func (ml *MessageList) SetStore(store *lib.MessageStore) {
|
||||||
ml.Invalidate()
|
ml.Invalidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ml *MessageList) SetInitDone() {
|
||||||
|
ml.isInitalizing = false
|
||||||
|
}
|
||||||
|
|
||||||
func (ml *MessageList) Store() *lib.MessageStore {
|
func (ml *MessageList) Store() *lib.MessageStore {
|
||||||
return ml.store
|
return ml.store
|
||||||
}
|
}
|
||||||
|
@ -209,3 +219,9 @@ func (ml *MessageList) Scroll() {
|
||||||
}
|
}
|
||||||
ml.Invalidate()
|
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)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue