From d3a10b49834a9cb24411f8af3e68a4f8ea186152 Mon Sep 17 00:00:00 2001 From: Aivars Vaivods Date: Wed, 13 Apr 2022 23:04:59 +0300 Subject: [PATCH] Initialization fix for dynamic folders There is an issue with backends, that provide dynamic folders, namely when opening folder, that isn't defined in config file, you get empty folder. To actually get messages listed, you need to open that folder twice. At first attempt only DirectoryInfo is fetched and new MessageStore created. Second attempt populates previously created MessageStore with list of messages. For pre-configured folders, DirectoryInfos are fetched upon connection to backend and, when folder is opened, MessageStore is updated with list of messages. Fixes: https://todo.sr.ht/~rjarry/aerc/30 Signed-off-by: Aivars Vaivods Acked-by: Robin Jarry --- widgets/dirlist.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/widgets/dirlist.go b/widgets/dirlist.go index 11e1b20..b6c09dd 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -133,6 +133,12 @@ func (dirlist *DirectoryList) Select(name string) { select { case <-time.After(dirlist.UiConfig().DirListDelay): + newStore := true + for _, s := range dirlist.store.List() { + if s == dirlist.selecting { + newStore = false + } + } dirlist.worker.PostAction(&types.OpenDirectory{Directory: name}, func(msg types.WorkerMessage) { switch msg.(type) { @@ -156,6 +162,9 @@ func (dirlist *DirectoryList) Select(name string) { sort.Strings(dirlist.dirs) } dirlist.sortDirsByFoldersSortConfig() + if newStore { + dirlist.worker.PostAction(&types.FetchDirectoryContents{}, nil) + } } dirlist.Invalidate() })