plugins/base: fix mailbox unread count

This commit is contained in:
Simon Ser 2020-05-13 18:18:13 +02:00
parent 37be46c047
commit 3036cc4436
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 29 additions and 12 deletions

View file

@ -27,16 +27,6 @@ func (mbox *MailboxInfo) URL() *url.URL {
}
}
type MailboxStatus struct {
*imap.MailboxStatus
}
func (mbox *MailboxStatus) URL() *url.URL {
return &url.URL{
Path: fmt.Sprintf("/mailbox/%v", url.PathEscape(mbox.Name)),
}
}
func listMailboxes(conn *imapclient.Client) ([]MailboxInfo, error) {
ch := make(chan *imap.MailboxInfo, 10)
done := make(chan error, 1)
@ -65,6 +55,29 @@ func listMailboxes(conn *imapclient.Client) ([]MailboxInfo, error) {
return mailboxes, nil
}
type MailboxStatus struct {
*imap.MailboxStatus
}
func (mbox *MailboxStatus) URL() *url.URL {
return &url.URL{
Path: fmt.Sprintf("/mailbox/%v", url.PathEscape(mbox.Name)),
}
}
func getMailboxStatus(conn *imapclient.Client, name string) (*MailboxStatus, error) {
items := []imap.StatusItem{
imap.StatusMessages,
imap.StatusUidValidity,
imap.StatusUnseen,
}
status, err := conn.Status(name, items)
if err != nil {
return nil, fmt.Errorf("failed to get mailbox status: %v", err)
}
return &MailboxStatus{status}, nil
}
type mailboxType int
const (

View file

@ -111,7 +111,9 @@ func handleGetMailbox(ctx *alps.Context) error {
if err != nil {
return err
}
mbox = &MailboxStatus{c.Mailbox()}
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
return nil
})
if err != nil {
@ -213,7 +215,9 @@ func handleGetPart(ctx *alps.Context, raw bool) error {
if msg, part, err = getMessagePart(c, mboxName, uid, partPath); err != nil {
return err
}
mbox = &MailboxStatus{c.Mailbox()}
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
return nil
})
if err != nil {