imap: fix confusion between mailbox flags and attributes
This commit is contained in:
parent
7d3d0ee71e
commit
25bd036b53
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue