1339faf7881f33762c6e0a4915404e362fc51de1 — Jeffas 15 days ago 00b9ca5
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.
2 files changed, 9 insertions(+), 3 deletions(-)

M lib/msgstore.go
M widgets/msglist.go
M lib/msgstore.go => lib/msgstore.go +6 -3
@@ 10,9 10,10 @@   // 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 @@ 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 @@ }
  		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 {

M widgets/msglist.go => widgets/msglist.go +3 -0
@@ 61,6 61,9 @@ ml.drawEmptyMessage(ctx)
  			return
  		}
+ 	} else if store.FetchingContents {
+ 		ml.spinner.Draw(ctx)
+ 		return
  	}
  
  	var (