summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2020-02-19 08:37:20 +0100
committerReto Brunner <reto@labrat.space>2020-02-19 08:37:20 +0100
commitd44bdc9fb99463081fa622589f7432191dd8b30d (patch)
tree969cc47ed46cda3ec7437544cd0d67069efdae21
parentbcab8de07272699e218bafb1c37c1871f3640336 (diff)
downloadaerc-d44bdc9fb99463081fa622589f7432191dd8b30d.tar.gz
Revert "Only fetch the directory contents when we are switching directories"
This reverts commit bd4df530095ee343778a59120a9e641c01010b0f.

I did not properly untangle the opening / dirlist update of each other.
This interferes with the imap worker, hence the revert
-rw-r--r--lib/msgstore.go8
-rw-r--r--widgets/account.go2
-rw-r--r--widgets/dirlist.go5
3 files changed, 9 insertions, 6 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go
index 737ba4d..ae58aaf 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -31,6 +31,8 @@ type MessageStore struct {
 	resultIndex int
 	filter      bool
 
+	defaultSortCriteria []*types.SortCriterion
+
 	// Map of uids we've asked the worker to fetch
 	onUpdate       func(store *MessageStore) // TODO: multiple onUpdate handlers
 	onUpdateDirs   func()
@@ -44,6 +46,7 @@ type MessageStore struct {
 
 func NewMessageStore(worker *types.Worker,
 	dirInfo *models.DirectoryInfo,
+	defaultSortCriteria []*types.SortCriterion,
 	triggerNewEmail func(*models.MessageInfo),
 	triggerDirectoryChange func()) *MessageStore {
 
@@ -57,6 +60,8 @@ func NewMessageStore(worker *types.Worker,
 		bodyCallbacks:   make(map[uint32][]func(io.Reader)),
 		headerCallbacks: make(map[uint32][]func(*types.MessageInfo)),
 
+		defaultSortCriteria: defaultSortCriteria,
+
 		pendingBodies:  make(map[uint32]interface{}),
 		pendingHeaders: make(map[uint32]interface{}),
 		worker:         worker,
@@ -172,6 +177,9 @@ 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)
 		update = true
 	case *types.DirectoryContents:
 		newMap := make(map[uint32]*models.MessageInfo)
diff --git a/widgets/account.go b/widgets/account.go
index a83624f..f8b6581 100644
--- a/widgets/account.go
+++ b/widgets/account.go
@@ -242,6 +242,7 @@ func (acct *AccountView) onMessage(msg types.WorkerMessage) {
 			store.Update(msg)
 		} else {
 			store = lib.NewMessageStore(acct.worker, msg.Info,
+				acct.getSortCriteria(),
 				func(msg *models.MessageInfo) {
 					acct.conf.Triggers.ExecNewEmail(acct.acct,
 						acct.conf, msg)
@@ -256,7 +257,6 @@ func (acct *AccountView) onMessage(msg types.WorkerMessage) {
 				acct.msglist.SetStore(store)
 			})
 		}
-		acct.dirlist.Invalidate()
 	case *types.DirectoryContents:
 		if store, ok := acct.dirlist.SelectedMsgStore(); ok {
 			store.Update(msg)
diff --git a/widgets/dirlist.go b/widgets/dirlist.go
index 81a97cc..70263a9 100644
--- a/widgets/dirlist.go
+++ b/widgets/dirlist.go
@@ -11,7 +11,6 @@ import (
 
 	"git.sr.ht/~sircmpwn/aerc/config"
 	"git.sr.ht/~sircmpwn/aerc/lib"
-	libsort "git.sr.ht/~sircmpwn/aerc/lib/sort"
 	"git.sr.ht/~sircmpwn/aerc/lib/ui"
 	"git.sr.ht/~sircmpwn/aerc/models"
 	"git.sr.ht/~sircmpwn/aerc/worker/types"
@@ -105,10 +104,6 @@ func (dirlist *DirectoryList) Select(name string) {
 				}
 				sort.Strings(dirlist.dirs)
 				dirlist.sortDirsByFoldersSortConfig()
-				// once opened, we need to enumerate the contents
-				dirlist.worker.PostAction(&types.FetchDirectoryContents{
-					SortCriteria: dirlist.getSortCriteria(),
-				}, nil)
 			}
 			dirlist.Invalidate()
 		})