imap: expose folders as mailboxes
This commit is contained in:
parent
cffd3cd13a
commit
5fb5ec9775
|
@ -31,6 +31,22 @@ type mailbox struct {
|
||||||
deleted map[string]struct{}
|
deleted map[string]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newMailbox(name string, label string, flags []string, u *user) (*mailbox, error) {
|
||||||
|
mboxDB, err := u.db.Mailbox(label)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &mailbox{
|
||||||
|
name: name,
|
||||||
|
label: label,
|
||||||
|
flags: flags,
|
||||||
|
u: u,
|
||||||
|
db: mboxDB,
|
||||||
|
deleted: make(map[string]struct{}),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (mbox *mailbox) Name() string {
|
func (mbox *mailbox) Name() string {
|
||||||
return mbox.name
|
return mbox.name
|
||||||
}
|
}
|
||||||
|
|
27
imap/user.go
27
imap/user.go
|
@ -110,18 +110,29 @@ func (u *user) initMailboxes() error {
|
||||||
u.mailboxes = make(map[string]*mailbox)
|
u.mailboxes = make(map[string]*mailbox)
|
||||||
|
|
||||||
for _, data := range systemMailboxes {
|
for _, data := range systemMailboxes {
|
||||||
mboxDB, err := u.db.Mailbox(data.label)
|
var err error
|
||||||
|
u.mailboxes[data.label], err = newMailbox(data.name, data.label, data.flags, u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
labels, err := u.c.ListLabels()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
u.mailboxes[data.label] = &mailbox{
|
for _, label := range labels {
|
||||||
name: data.name,
|
if label.Exclusive != 1 {
|
||||||
label: data.label,
|
continue
|
||||||
flags: data.flags,
|
}
|
||||||
u: u,
|
if _, ok := u.mailboxes[label.ID]; ok {
|
||||||
db: mboxDB,
|
continue
|
||||||
deleted: make(map[string]struct{}),
|
}
|
||||||
|
|
||||||
|
u.mailboxes[label.ID], err = newMailbox(label.Name, label.ID, nil, u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue