aboutsummaryrefslogtreecommitdiff
path: root/lib/msgstore.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/msgstore.go')
-rw-r--r--lib/msgstore.go12
1 files changed, 8 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()
+ }
})
}