From 2a2a48c7fafc4a32b1f4a4629e1d5447e29e8d57 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 17 Dec 2019 12:42:04 +0100 Subject: [PATCH] Add a form to set message flags References: https://todo.sr.ht/~sircmpwn/koushin/36 --- go.mod | 2 +- go.sum | 2 + plugins/base/imap.go | 10 +++ plugins/base/public/message.html | 21 +++++- plugins/base/routes.go | 108 +++++++++++++++++++++++-------- plugins/base/template.go | 22 +++++++ 6 files changed, 137 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index 5b738dc..8a54e91 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.sr.ht/~emersion/koushin go 1.13 require ( - github.com/emersion/go-imap v1.0.3-0.20191213134403-f1c945935a36 + github.com/emersion/go-imap v1.0.3-0.20191217110750-414e9a7e3dd8 github.com/emersion/go-imap-move v0.0.0-20190710073258-6e5a51a5b342 github.com/emersion/go-message v0.10.8 github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b diff --git a/go.sum b/go.sum index 585c322..36e7fba 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumC github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/emersion/go-imap v1.0.3-0.20191213134403-f1c945935a36 h1:CrPKMqbfsFwzOFqqXd43j40NfCKJUgm6niLJhklQkrA= github.com/emersion/go-imap v1.0.3-0.20191213134403-f1c945935a36/go.mod h1:TjT+1ncDso8j/VXeUHcZeQknho5hjyQLqEIybJJjjDI= +github.com/emersion/go-imap v1.0.3-0.20191217110750-414e9a7e3dd8 h1:gpT/I+R/CWdn6XqSTanqWRRXaqVP0tCCEkqldtMWCxs= +github.com/emersion/go-imap v1.0.3-0.20191217110750-414e9a7e3dd8/go.mod h1:TjT+1ncDso8j/VXeUHcZeQknho5hjyQLqEIybJJjjDI= github.com/emersion/go-imap-move v0.0.0-20190710073258-6e5a51a5b342 h1:5p1t3e1PomYgLWwEwhwEU5kVBwcyAcVrOpexv8AeZx0= github.com/emersion/go-imap-move v0.0.0-20190710073258-6e5a51a5b342/go.mod h1:QuMaZcKFDVI0yCrnAbPLfbwllz1wtOrZH8/vZ5yzp4w= github.com/emersion/go-message v0.10.8 h1:1l1Vb+0By9U1ITTH3FgKfJQWQ9sTI3N1smPe6SS3QXY= diff --git a/plugins/base/imap.go b/plugins/base/imap.go index 3ccc73a..433a63e 100644 --- a/plugins/base/imap.go +++ b/plugins/base/imap.go @@ -174,6 +174,15 @@ func (msg *IMAPMessage) PartTree() *IMAPPartNode { return imapPartTree(msg.BodyStructure, nil) } +func (msg *IMAPMessage) HasFlag(flag string) bool { + for _, f := range msg.Flags { + if imap.CanonicalFlag(f) == flag { + return true + } + } + return false +} + func listMessages(conn *imapclient.Client, mboxName string, page int) ([]IMAPMessage, error) { if err := ensureMailboxSelected(conn, mboxName); err != nil { return nil, err @@ -295,6 +304,7 @@ func getMessagePart(conn *imapclient.Client, mboxName string, uid uint32, partPa imap.FetchEnvelope, imap.FetchUid, imap.FetchBodyStructure, + imap.FetchFlags, partHeaderSection.FetchItem(), partBodySection.FetchItem(), } diff --git a/plugins/base/public/message.html b/plugins/base/public/message.html index 0b7a8d5..56e6e6f 100644 --- a/plugins/base/public/message.html +++ b/plugins/base/public/message.html @@ -30,6 +30,25 @@ +{{if .Flags}} +
+

Flags:

+ {{range $name, $has := .Flags}} + {{if ismutableflag $name}} + + +
+ {{else}} + {{if $has}} + + {{end}} + {{end}} + {{end}} + +
+{{end}} +