aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-05-21 19:19:17 +0200
committerSimon Ser <contact@emersion.fr>2020-05-21 19:19:17 +0200
commit9a7acd27919900edae5a8cdda29e02fd96d2f1ce (patch)
tree2f74fdf2d219e457c1b89217974f8d3b1432dae7 /plugins
parent0a9c246794b7cec7e5ec510dd8af158e1d88cb82 (diff)
downloadalps-9a7acd27919900edae5a8cdda29e02fd96d2f1ce.tar.gz
alps-9a7acd27919900edae5a8cdda29e02fd96d2f1ce.zip
Add INBOX unread count on mailbox/message pages
Diffstat (limited to 'plugins')
-rw-r--r--plugins/base/routes.go22
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,