aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffas <dev@jeffas.io>2019-10-02 11:24:12 +0100
committerDrew DeVault <sir@cmpwn.com>2019-10-09 19:46:43 -0400
commit1339faf7881f33762c6e0a4915404e362fc51de1 (patch)
treee8ffd3d7827a9753c2290869839e77bbe50aa6d3
parent00b9ca503286d5dc43def31db713e853c8aeee13 (diff)
downloadaerc-1339faf7881f33762c6e0a4915404e362fc51de1.tar.gz
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.go9
-rw-r--r--widgets/msglist.go3
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go
index b0392bab..8cceed81 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 5c2d2f44..729b65f5 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 (