diff options
Diffstat (limited to 'worker/jmap/cache/folder_contents.go')
-rw-r--r-- | worker/jmap/cache/folder_contents.go | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/worker/jmap/cache/folder_contents.go b/worker/jmap/cache/folder_contents.go index 6c6a7d80..46a36607 100644 --- a/worker/jmap/cache/folder_contents.go +++ b/worker/jmap/cache/folder_contents.go @@ -3,26 +3,32 @@ package cache import ( "reflect" + "git.sr.ht/~rjarry/aerc/log" + "git.sr.ht/~rjarry/aerc/worker/types" "git.sr.ht/~rockorager/go-jmap" - "git.sr.ht/~rockorager/go-jmap/mail/email" ) type FolderContents struct { MailboxID jmap.ID QueryState string - Filter *email.FilterCondition - Sort []*email.SortComparator + Filter *types.SearchCriteria + Sort []*types.SortCriterion MessageIDs []jmap.ID } func (c *JMAPCache) GetFolderContents(mailboxId jmap.ID) (*FolderContents, error) { - buf, err := c.get(folderContentsKey(mailboxId)) + key := folderContentsKey(mailboxId) + buf, err := c.get(key) if err != nil { return nil, err } m := new(FolderContents) err = unmarshal(buf, m) if err != nil { + log.Debugf("cache format has changed, purging foldercontents") + if e := c.purge("foldercontents/"); e != nil { + log.Errorf("foldercontents cache purge: %s", e) + } return nil, err } return m, nil @@ -45,7 +51,7 @@ func folderContentsKey(mailboxId jmap.ID) string { } func (f *FolderContents) NeedsRefresh( - filter *email.FilterCondition, sort []*email.SortComparator, + filter *types.SearchCriteria, sort []*types.SortCriterion, ) bool { if f.QueryState == "" || f.Filter == nil || len(f.Sort) != len(sort) { return true @@ -56,6 +62,5 @@ func (f *FolderContents) NeedsRefresh( return true } } - return !reflect.DeepEqual(filter, f.Filter) } |