~sircmpwn/aerc

1339faf7881f33762c6e0a4915404e362fc51de1 — Jeffas 8 months 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 @@ 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 {

M widgets/msglist.go => widgets/msglist.go +3 -0
@@ 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 (