diff options
author | Jeffas <dev@jeffas.io> | 2020-02-29 02:50:11 +0000 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-02-28 22:06:01 -0500 |
commit | b55813f2c0e96e0350473d96dc2dd82f0544ea8f (patch) | |
tree | 574d898f3912bf577ed41ca28445fa390a56d5e2 | |
parent | 2a0430ab90bdcb03d3f3243945280f29642faab0 (diff) | |
download | aerc-b55813f2c0e96e0350473d96dc2dd82f0544ea8f.tar.gz |
Don't show empty message while sorting
This changes the ui to show the spinner while we are sorting. It only shows one line of the spinner since there are an unknown number of messages at this time.
-rw-r--r-- | lib/msgstore.go | 12 | ||||
-rw-r--r-- | widgets/msglist.go | 6 |
2 files changed, 14 insertions, 4 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go index b1785c1..709c7a2 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -14,6 +14,8 @@ type MessageStore struct { Deleted map[uint32]interface{} DirInfo models.DirectoryInfo Messages map[uint32]*models.MessageInfo + Sorting bool + // Ordered list of known UIDs uids []uint32 @@ -185,9 +187,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { switch msg := msg.(type) { case *types.DirectoryInfo: store.DirInfo = *msg.Info - store.worker.PostAction(&types.FetchDirectoryContents{ - SortCriteria: store.defaultSortCriteria, - }, nil) + store.Sort(store.defaultSortCriteria, nil) update = true case *types.DirectoryContents: newMap := make(map[uint32]*models.MessageInfo) @@ -599,10 +599,14 @@ func (store *MessageStore) ModifyLabels(uids []uint32, add, remove []string, } func (store *MessageStore) Sort(criteria []*types.SortCriterion, cb func()) { + store.Sorting = true store.worker.PostAction(&types.FetchDirectoryContents{ SortCriteria: criteria, }, func(msg types.WorkerMessage) { - cb() + store.Sorting = false + if cb != nil { + cb() + } }) } diff --git a/widgets/msglist.go b/widgets/msglist.go index 51c133c..59abf59 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -63,6 +63,12 @@ func (ml *MessageList) Draw(ctx *ui.Context) { } } + if store.Sorting { + ml.spinner.Start() + ml.spinner.Draw(ctx) + return + } + var ( needsHeaders []uint32 row int = 0 |