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 (