imap: fix confusion between mailbox flags and attributes

This commit is contained in:
Simon Ser 2020-02-29 10:50:23 +01:00
parent 7d3d0ee71e
commit 25bd036b53
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
2 changed files with 8 additions and 8 deletions

View File

@ -19,7 +19,7 @@ const delimiter = "/"
type mailbox struct { type mailbox struct {
name string name string
label string label string
flags []string attrs []string
u *user u *user
db *database.Mailbox db *database.Mailbox
@ -31,7 +31,7 @@ type mailbox struct {
deleted map[string]struct{} deleted map[string]struct{}
} }
func newMailbox(name string, label string, flags []string, u *user) (*mailbox, error) { func newMailbox(name string, label string, attrs []string, u *user) (*mailbox, error) {
mboxDB, err := u.db.Mailbox(label) mboxDB, err := u.db.Mailbox(label)
if err != nil { if err != nil {
return nil, err return nil, err
@ -40,7 +40,7 @@ func newMailbox(name string, label string, flags []string, u *user) (*mailbox, e
return &mailbox{ return &mailbox{
name: name, name: name,
label: label, label: label,
flags: flags, attrs: attrs,
u: u, u: u,
db: mboxDB, db: mboxDB,
deleted: make(map[string]struct{}), deleted: make(map[string]struct{}),
@ -53,7 +53,7 @@ func (mbox *mailbox) Name() string {
func (mbox *mailbox) Info() (*imap.MailboxInfo, error) { func (mbox *mailbox) Info() (*imap.MailboxInfo, error) {
return &imap.MailboxInfo{ return &imap.MailboxInfo{
Attributes: append(mbox.flags, imap.NoInferiorsAttr), Attributes: append([]string{imap.NoInferiorsAttr}, mbox.attrs...),
Delimiter: delimiter, Delimiter: delimiter,
Name: mbox.name, Name: mbox.name,
}, nil }, nil
@ -61,8 +61,8 @@ func (mbox *mailbox) Info() (*imap.MailboxInfo, error) {
func (mbox *mailbox) Status(items []imap.StatusItem) (*imap.MailboxStatus, error) { func (mbox *mailbox) Status(items []imap.StatusItem) (*imap.MailboxStatus, error) {
status := imap.NewMailboxStatus(mbox.name, items) status := imap.NewMailboxStatus(mbox.name, items)
status.Flags = mbox.flags status.Flags = []string{imap.SeenFlag, imap.FlaggedFlag, imap.DeletedFlag}
status.PermanentFlags = []string{imap.SeenFlag, imap.FlaggedFlag, imap.DeletedFlag} status.PermanentFlags = []string{imap.SeenFlag, imap.FlaggedFlag}
status.UnseenSeqNum = 0 // TODO status.UnseenSeqNum = 0 // TODO
for _, name := range items { for _, name := range items {

View File

@ -17,7 +17,7 @@ import (
var systemMailboxes = []struct { var systemMailboxes = []struct {
name string name string
label string label string
flags []string attrs []string
}{ }{
{imap.InboxName, protonmail.LabelInbox, nil}, {imap.InboxName, protonmail.LabelInbox, nil},
{"All Mail", protonmail.LabelAllMail, []string{specialuse.All}}, {"All Mail", protonmail.LabelAllMail, []string{specialuse.All}},
@ -111,7 +111,7 @@ func (u *user) initMailboxes() error {
for _, data := range systemMailboxes { for _, data := range systemMailboxes {
var err error var err error
u.mailboxes[data.label], err = newMailbox(data.name, data.label, data.flags, u) u.mailboxes[data.label], err = newMailbox(data.name, data.label, data.attrs, u)
if err != nil { if err != nil {
return err return err
} }