diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/base/routes.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/plugins/base/routes.go b/plugins/base/routes.go index 1562a15..f20097e 100644 --- a/plugins/base/routes.go +++ b/plugins/base/routes.go @@ -668,14 +668,23 @@ func handleCompose(ctx *alps.Context, msg *OutgoingMessage, options *composeOpti } func handleComposeNew(ctx *alps.Context) error { + text := ctx.QueryParam("body") + settings, err := loadSettings(ctx.Session.Store()) + if err != nil { + return nil + } + if text == "" && settings.Signature != "" { + text = "\n\n\n-- \n" + settings.Signature + } + // These are common mailto URL query parameters // TODO: cc, bcc return handleCompose(ctx, &OutgoingMessage{ To: strings.Split(ctx.QueryParam("to"), ","), Subject: ctx.QueryParam("subject"), - Text: ctx.QueryParam("body"), MessageID: mail.GenerateMessageID(), InReplyTo: ctx.QueryParam("in-reply-to"), + Text: text, }, &composeOptions{}) } @@ -1124,6 +1133,7 @@ const maxMessagesPerPage = 100 type Settings struct { MessagesPerPage int + Signature string } func loadSettings(s alps.Store) (*Settings, error) { @@ -1143,6 +1153,9 @@ func (s *Settings) check() error { if s.MessagesPerPage <= 0 || s.MessagesPerPage > maxMessagesPerPage { return fmt.Errorf("messages per page out of bounds: %v", s.MessagesPerPage) } + if len(s.Signature) > 2048 { + return fmt.Errorf("Signature must be 2048 characters or fewer") + } return nil } @@ -1162,6 +1175,7 @@ func handleSettings(ctx *alps.Context) error { if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "invalid messages per page: %v", err) } + settings.Signature = ctx.FormValue("signature") if err := settings.check(); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) |