diff options
author | Simon Ser <contact@emersion.fr> | 2020-05-21 19:19:17 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-05-21 19:19:17 +0200 |
commit | 9a7acd27919900edae5a8cdda29e02fd96d2f1ce (patch) | |
tree | 2f74fdf2d219e457c1b89217974f8d3b1432dae7 /plugins | |
parent | 0a9c246794b7cec7e5ec510dd8af158e1d88cb82 (diff) | |
download | alps-9a7acd27919900edae5a8cdda29e02fd96d2f1ce.tar.gz alps-9a7acd27919900edae5a8cdda29e02fd96d2f1ce.zip |
Add INBOX unread count on mailbox/message pages
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/base/routes.go | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/plugins/base/routes.go b/plugins/base/routes.go index d023b4b..9280e1d 100644 --- a/plugins/base/routes.go +++ b/plugins/base/routes.go @@ -66,6 +66,7 @@ func registerRoutes(p *alps.GoPlugin) { type MailboxRenderData struct { alps.BaseRenderData Mailbox *MailboxStatus + Inbox *MailboxStatus Mailboxes []MailboxInfo Messages []IMAPMessage PrevPage, NextPage int @@ -96,7 +97,7 @@ func handleGetMailbox(ctx *alps.Context) error { var mailboxes []MailboxInfo var msgs []IMAPMessage - var mbox *MailboxStatus + var mbox, inbox *MailboxStatus var total int err = ctx.Session.DoIMAP(func(c *imapclient.Client) error { var err error @@ -114,6 +115,13 @@ func handleGetMailbox(ctx *alps.Context) error { if mbox, err = getMailboxStatus(c, mboxName); err != nil { return err } + if mboxName == "INBOX" { + inbox = mbox + } else { + if inbox, err = getMailboxStatus(c, "INBOX"); err != nil { + return err + } + } return nil }) if err != nil { @@ -149,6 +157,7 @@ func handleGetMailbox(ctx *alps.Context) error { return ctx.Render(http.StatusOK, "mailbox.html", &MailboxRenderData{ BaseRenderData: *alps.NewBaseRenderData(ctx).WithTitle(title), Mailbox: mbox, + Inbox: inbox, Mailboxes: mailboxes, Messages: msgs, PrevPage: prevPage, @@ -207,6 +216,7 @@ type MessageRenderData struct { alps.BaseRenderData Mailboxes []MailboxInfo Mailbox *MailboxStatus + Inbox *MailboxStatus Message *IMAPMessage Part *IMAPPartNode View interface{} @@ -233,7 +243,7 @@ func handleGetPart(ctx *alps.Context, raw bool) error { var mailboxes []MailboxInfo var msg *IMAPMessage var part *message.Entity - var mbox *MailboxStatus + var mbox, inbox *MailboxStatus err = ctx.Session.DoIMAP(func(c *imapclient.Client) error { var err error if mailboxes, err = listMailboxes(c); err != nil { @@ -245,6 +255,13 @@ func handleGetPart(ctx *alps.Context, raw bool) error { if mbox, err = getMailboxStatus(c, mboxName); err != nil { return err } + if mboxName == "INBOX" { + inbox = mbox + } else { + if inbox, err = getMailboxStatus(c, "INBOX"); err != nil { + return err + } + } return nil }) if err != nil { @@ -306,6 +323,7 @@ func handleGetPart(ctx *alps.Context, raw bool) error { WithTitle(msg.Envelope.Subject), Mailboxes: mailboxes, Mailbox: mbox, + Inbox: inbox, Message: msg, Part: msg.PartByPath(partPath), View: view, |