aboutsummaryrefslogtreecommitdiff
path: root/lib/msgstore.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/msgstore.go')
-rw-r--r--lib/msgstore.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go
index 48a105e..b346129 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -33,12 +33,14 @@ type MessageStore struct {
pendingHeaders map[uint32]interface{}
worker *types.Worker
- triggerNewEmail func(*models.MessageInfo)
+ triggerNewEmail func(*models.MessageInfo)
+ triggerDirectoryChange func()
}
func NewMessageStore(worker *types.Worker,
dirInfo *models.DirectoryInfo,
- triggerNewEmail func(*models.MessageInfo)) *MessageStore {
+ triggerNewEmail func(*models.MessageInfo),
+ triggerDirectoryChange func()) *MessageStore {
return &MessageStore{
Deleted: make(map[uint32]interface{}),
@@ -52,7 +54,8 @@ func NewMessageStore(worker *types.Worker,
pendingHeaders: make(map[uint32]interface{}),
worker: worker,
- triggerNewEmail: triggerNewEmail,
+ triggerNewEmail: triggerNewEmail,
+ triggerDirectoryChange: triggerDirectoryChange,
}
}
@@ -147,6 +150,7 @@ func merge(to *models.MessageInfo, from *models.MessageInfo) {
func (store *MessageStore) Update(msg types.WorkerMessage) {
update := false
+ directoryChange := false
switch msg := msg.(type) {
case *types.DirectoryInfo:
store.DirInfo = *msg.Info
@@ -159,6 +163,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) {
newMap[uid] = msg
} else {
newMap[uid] = nil
+ directoryChange = true
}
}
store.Messages = newMap
@@ -225,6 +230,10 @@ func (store *MessageStore) Update(msg types.WorkerMessage) {
if update {
store.update()
}
+
+ if directoryChange && store.triggerDirectoryChange != nil {
+ store.triggerDirectoryChange()
+ }
}
func (store *MessageStore) OnUpdate(fn func(store *MessageStore)) {