diff options
author | Reto Brunner <reto@labrat.space> | 2020-02-15 14:14:44 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-02-16 10:41:17 -0500 |
commit | 89b742dc6c2cc4e70cc7fd44454ee184dcc4b627 (patch) | |
tree | 53d9032255e94900df7e1c8d74735b93b4635b39 | |
parent | 66b68f35b3f3f3b97ec9951397fd75afeb0d0995 (diff) |
Request DirInfo whenever the unread count may have changed
Actions such as read / unread or the addition of new messages do change
the read/unread/recent count. Hence we request an update from the workers.
Workers going over the network should probably cache the information and invalidate
it only if necessary
-rw-r--r-- | lib/msgstore.go | 9 | ||||
-rw-r--r-- | worker/types/messages.go | 7 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go index e6ddf72..737ba4d 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -168,6 +168,7 @@ func merge(to *models.MessageInfo, from *models.MessageInfo) { func (store *MessageStore) Update(msg types.WorkerMessage) { update := false directoryChange := false + requestDirInfo := false switch msg := msg.(type) { case *types.DirectoryInfo: store.DirInfo = *msg.Info @@ -212,6 +213,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { } } update = true + requestDirInfo = true case *types.FullMessage: if _, ok := store.pendingBodies[msg.Content.Uid]; ok { delete(store.pendingBodies, msg.Content.Uid) @@ -245,6 +247,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { } store.uids = uids update = true + requestDirInfo = true } if update { @@ -254,6 +257,12 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { if directoryChange && store.triggerDirectoryChange != nil { store.triggerDirectoryChange() } + + if requestDirInfo { + store.worker.PostAction(&types.DirectoryInfoUpdateRequest{ + Name: store.DirInfo.Name, + }, nil) + } } func (store *MessageStore) OnUpdate(fn func(store *MessageStore)) { diff --git a/worker/types/messages.go b/worker/types/messages.go index c7d5077..f43ab0a 100644 --- a/worker/types/messages.go +++ b/worker/types/messages.go @@ -149,6 +149,13 @@ type DirectoryInfo struct { Info *models.DirectoryInfo } +// Sent whenever we assume that a directory content changed +// workers are requested to update the DirectoryInfo to display the unread count +type DirectoryInfoUpdateRequest struct { + Message + Name string +} + type DirectoryContents struct { Message Uids []uint32 |