plugins/base: fix mailbox unread count
This commit is contained in:
parent
37be46c047
commit
3036cc4436
2 changed files with 29 additions and 12 deletions
|
@ -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 (
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue