init: pristine aerc 0.20.0 source
This commit is contained in:
Vendored
+59
@@ -0,0 +1,59 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
|
||||
"git.sr.ht/~rjarry/aerc/lib/log"
|
||||
"git.sr.ht/~rjarry/aerc/worker/types"
|
||||
"git.sr.ht/~rockorager/go-jmap"
|
||||
)
|
||||
|
||||
type FolderContents struct {
|
||||
MailboxID jmap.ID
|
||||
QueryState string
|
||||
Filter *types.SearchCriteria
|
||||
Sort []*types.SortCriterion
|
||||
MessageIDs []jmap.ID
|
||||
}
|
||||
|
||||
func (c *JMAPCache) GetFolderContents(mailboxId jmap.ID) (*FolderContents, error) {
|
||||
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
|
||||
}
|
||||
|
||||
func (c *JMAPCache) PutFolderContents(mailboxId jmap.ID, m *FolderContents) error {
|
||||
buf, err := marshal(m)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.put(folderContentsKey(mailboxId), buf)
|
||||
}
|
||||
|
||||
func (c *JMAPCache) DeleteFolderContents(mailboxId jmap.ID) error {
|
||||
return c.delete(folderContentsKey(mailboxId))
|
||||
}
|
||||
|
||||
func folderContentsKey(mailboxId jmap.ID) string {
|
||||
return "foldercontents/" + string(mailboxId)
|
||||
}
|
||||
|
||||
func (f *FolderContents) NeedsRefresh(
|
||||
filter *types.SearchCriteria, sort []*types.SortCriterion,
|
||||
) bool {
|
||||
return f.QueryState == "" ||
|
||||
!reflect.DeepEqual(f.Sort, sort) ||
|
||||
!reflect.DeepEqual(f.Filter, filter)
|
||||
}
|
||||
Reference in New Issue
Block a user