all repos — postern @ fc287763b9ce6b6f9823e11c0b1173da0446ebc5

Modern mail management

internal/model/mailbox.go (view raw)

 1package model
 2
 3import "github.com/emersion/go-imap/v2"
 4
 5type DefaultMailbox struct {
 6	Name       MailboxName
 7	SpecialUse imap.MailboxAttr
 8}
 9
10type MailboxName string
11
12var (
13	MailboxINBOX      = MailboxName("INBOX")
14	MailboxGatekeeper = MailboxName("Gatekeeper")
15	MailboxArchive    = MailboxName("Archive")
16	MailboxDrafts     = MailboxName("Drafts")
17	MailboxJunk       = MailboxName("Junk")
18	MailboxSent       = MailboxName("Sent")
19	MailboxTrash      = MailboxName("Trash")
20)
21
22func DefaultMailboxes() []DefaultMailbox {
23	return []DefaultMailbox{
24		{Name: MailboxINBOX},
25		{Name: MailboxGatekeeper},
26		{Name: MailboxArchive, SpecialUse: imap.MailboxAttrArchive},
27		{Name: MailboxDrafts, SpecialUse: imap.MailboxAttrDrafts},
28		{Name: MailboxJunk, SpecialUse: imap.MailboxAttrJunk},
29		{Name: MailboxSent, SpecialUse: imap.MailboxAttrSent},
30		{Name: MailboxTrash, SpecialUse: imap.MailboxAttrTrash},
31	}
32}
33
34type Mailbox struct {
35	ID            int
36	Name          string
37	SpecialUse    *string
38	UIDValidity   uint32
39	UIDNext       int
40	HighestModSeq int
41
42	NumMessages  uint32
43	NumUnseen    int
44	NumDeleted   int
45	Size         int64
46	IsSubscribed bool
47}