diff options
author | Jeffas <dev@jeffas.io> | 2019-10-02 11:24:12 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-10-09 19:46:43 -0400 |
commit | 1339faf7881f33762c6e0a4915404e362fc51de1 (patch) | |
tree | e8ffd3d7827a9753c2290869839e77bbe50aa6d3 | |
parent | 00b9ca503286d5dc43def31db713e853c8aeee13 (diff) |
Show spinner when fetching contents
The spinner should be shown when fetching the contents as we don't know
at that point whether there are some messages or not.
-rw-r--r-- | lib/msgstore.go | 9 | ||||
-rw-r--r-- | widgets/msglist.go | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go index b0392ba..8cceed8 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -10,9 +10,10 @@ import ( // Accesses to fields must be guarded by MessageStore.Lock/Unlock type MessageStore struct { - Deleted map[uint32]interface{} - DirInfo models.DirectoryInfo - Messages map[uint32]*models.MessageInfo + Deleted map[uint32]interface{} + DirInfo models.DirectoryInfo + Messages map[uint32]*models.MessageInfo + FetchingContents bool // Ordered list of known UIDs uids []uint32 @@ -159,6 +160,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { store.worker.PostAction(&types.FetchDirectoryContents{ SortCriteria: store.defaultSortCriteria, }, nil) + store.FetchingContents = true update = true case *types.DirectoryContents: newMap := make(map[uint32]*models.MessageInfo) @@ -172,6 +174,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { } store.Messages = newMap store.uids = msg.Uids + store.FetchingContents = false update = true case *types.MessageInfo: if existing, ok := store.Messages[msg.Info.Uid]; ok && existing != nil { diff --git a/widgets/msglist.go b/widgets/msglist.go index 5c2d2f4..729b65f 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -61,6 +61,9 @@ func (ml *MessageList) Draw(ctx *ui.Context) { ml.drawEmptyMessage(ctx) return } + } else if store.FetchingContents { + ml.spinner.Draw(ctx) + return } var ( |