aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeszek CimaƂa <ernierasta@zori.cz>2020-01-08 21:44:14 +0100
committerDrew DeVault <sir@cmpwn.com>2020-01-09 14:31:19 -0500
commitbf28e23933a9808820ef4855257accf4634068e9 (patch)
treed09d522d0f48d6f3e1013f5f7197e64636e51e99
parentda6fb1a1551767609e1d5a97631bdaffdc301f4c (diff)
create OriginalMail struct
-rw-r--r--commands/account/compose.go4
-rw-r--r--commands/msg/forward.go10
-rw-r--r--commands/msg/reply.go9
-rw-r--r--commands/msg/unsubscribe.go2
-rw-r--r--lib/templates/template.go28
-rw-r--r--models/models.go7
-rw-r--r--widgets/aerc.go3
-rw-r--r--widgets/compose.go5
8 files changed, 44 insertions, 24 deletions
diff --git a/commands/account/compose.go b/commands/account/compose.go
index 24e460b..c214441 100644
--- a/commands/account/compose.go
+++ b/commands/account/compose.go
@@ -5,6 +5,7 @@ import (
"regexp"
"strings"
+ "git.sr.ht/~sircmpwn/aerc/models"
"git.sr.ht/~sircmpwn/aerc/widgets"
"git.sr.ht/~sircmpwn/getopt"
)
@@ -31,7 +32,8 @@ func (Compose) Execute(aerc *widgets.Aerc, args []string) error {
acct := aerc.SelectedAccount()
composer, err := widgets.NewComposer(aerc,
- aerc.Config(), acct.AccountConfig(), acct.Worker(), template, nil)
+ aerc.Config(), acct.AccountConfig(), acct.Worker(),
+ template, nil, models.OriginalMail{})
if err != nil {
return err
}
diff --git a/commands/msg/forward.go b/commands/msg/forward.go
index 35d276e..c51949e 100644
--- a/commands/msg/forward.go
+++ b/commands/msg/forward.go
@@ -71,14 +71,16 @@ func (forward) Execute(aerc *widgets.Aerc, args []string) error {
"Subject": subject,
}
+ original := models.OriginalMail{}
+
addTab := func() (*widgets.Composer, error) {
if template != "" {
- defaults["OriginalFrom"] = models.FormatAddresses(msg.Envelope.From)
- defaults["OriginalDate"] = msg.Envelope.Date.Format("Mon Jan 2, 2006 at 3:04 PM")
+ original.From = models.FormatAddresses(msg.Envelope.From)
+ original.Date = msg.Envelope.Date.Format("Mon Jan 2, 2006 at 3:04 PM")
}
composer, err := widgets.NewComposer(aerc, aerc.Config(), acct.AccountConfig(),
- acct.Worker(), template, defaults)
+ acct.Worker(), template, defaults, original)
if err != nil {
aerc.PushError("Error: " + err.Error())
return nil, err
@@ -138,7 +140,7 @@ func (forward) Execute(aerc *widgets.Aerc, args []string) error {
store.FetchBodyPart(msg.Uid, msg.BodyStructure, []int{1}, func(reader io.Reader) {
buf := new(bytes.Buffer)
buf.ReadFrom(reader)
- defaults["Original"] = buf.String()
+ original.Text = buf.String()
addTab()
})
}
diff --git a/commands/msg/reply.go b/commands/msg/reply.go
index a7379d7..2964a83 100644
--- a/commands/msg/reply.go
+++ b/commands/msg/reply.go
@@ -116,15 +116,16 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
"Subject": subject,
"In-Reply-To": msg.Envelope.MessageId,
}
+ original := models.OriginalMail{}
addTab := func() error {
if template != "" {
- defaults["OriginalFrom"] = models.FormatAddresses(msg.Envelope.From)
- defaults["OriginalDate"] = msg.Envelope.Date.Format("Mon Jan 2, 2006 at 3:04 PM")
+ original.From = models.FormatAddresses(msg.Envelope.From)
+ original.Date = msg.Envelope.Date.Format("Mon Jan 2, 2006 at 3:04 PM")
}
composer, err := widgets.NewComposer(aerc, aerc.Config(),
- acct.AccountConfig(), acct.Worker(), template, defaults)
+ acct.AccountConfig(), acct.Worker(), template, defaults, original)
if err != nil {
aerc.PushError("Error: " + err.Error())
return err
@@ -155,7 +156,7 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
store.FetchBodyPart(msg.Uid, msg.BodyStructure, []int{1}, func(reader io.Reader) {
buf := new(bytes.Buffer)
buf.ReadFrom(reader)
- defaults["Original"] = buf.String()
+ original.Text = buf.String()
addTab()
})
return nil
diff --git a/commands/msg/unsubscribe.go b/commands/msg/unsubscribe.go
index 5ffec46..682b2b5 100644
--- a/commands/msg/unsubscribe.go
+++ b/commands/msg/unsubscribe.go
@@ -7,6 +7,7 @@ import (
"strings"
"git.sr.ht/~sircmpwn/aerc/lib"
+ "git.sr.ht/~sircmpwn/aerc/models"
"git.sr.ht/~sircmpwn/aerc/widgets"
)
@@ -94,6 +95,7 @@ func unsubscribeMailto(aerc *widgets.Aerc, u *url.URL) error {
acct.Worker(),
"",
defaults,
+ models.OriginalMail{},
)
if err != nil {
return err
diff --git a/lib/templates/template.go b/lib/templates/template.go
index 21f7b35..8a345d9 100644
--- a/lib/templates/template.go
+++ b/lib/templates/template.go
@@ -10,6 +10,7 @@ import (
"text/template"
"time"
+ "git.sr.ht/~sircmpwn/aerc/models"
"github.com/mitchellh/go-homedir"
)
@@ -28,20 +29,23 @@ type TemplateData struct {
func TestTemplateData() TemplateData {
defaults := map[string]string{
- "To": "John Doe <john@example.com>",
- "Cc": "Josh Doe <josh@example.com>",
- "From": "Jane Smith <jane@example.com>",
- "Subject": "This is only a test",
- "OriginalText": "This is only a test text",
- "OriginalFrom": "John Doe <john@example.com>",
- "OriginalDate": time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
+ "To": "John Doe <john@example.com>",
+ "Cc": "Josh Doe <josh@example.com>",
+ "From": "Jane Smith <jane@example.com>",
+ "Subject": "This is only a test",
}
- return ParseTemplateData(defaults)
+ original := models.OriginalMail{
+ Date: time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
+ From: "John Doe <john@example.com>",
+ Text: "This is only a test text",
+ }
+
+ return ParseTemplateData(defaults, original)
}
-func ParseTemplateData(defaults map[string]string) TemplateData {
- originalDate, _ := time.Parse("Mon Jan 2, 2006 at 3:04 PM", defaults["OriginalDate"])
+func ParseTemplateData(defaults map[string]string, original models.OriginalMail) TemplateData {
+ originalDate, _ := time.Parse("Mon Jan 2, 2006 at 3:04 PM", original.Date)
td := TemplateData{
To: parseAddressList(defaults["To"]),
Cc: parseAddressList(defaults["Cc"]),
@@ -49,8 +53,8 @@ func ParseTemplateData(defaults map[string]string) TemplateData {
From: parseAddressList(defaults["From"]),
Date: time.Now(),
Subject: defaults["Subject"],
- OriginalText: defaults["Original"],
- OriginalFrom: parseAddressList(defaults["OriginalFrom"]),
+ OriginalText: original.Text,
+ OriginalFrom: parseAddressList(original.From),
OriginalDate: originalDate,
}
return td
diff --git a/models/models.go b/models/models.go
index 036a609..7c3c192 100644
--- a/models/models.go
+++ b/models/models.go
@@ -164,3 +164,10 @@ func FormatAddresses(addrs []*Address) string {
}
return val.String()
}
+
+// OriginalMail is helper struct used for reply/forward
+type OriginalMail struct {
+ Date string
+ From string
+ Text string
+}
diff --git a/widgets/aerc.go b/widgets/aerc.go
index da3f56f..a0e356a 100644
--- a/widgets/aerc.go
+++ b/widgets/aerc.go
@@ -14,6 +14,7 @@ import (
"git.sr.ht/~sircmpwn/aerc/config"
"git.sr.ht/~sircmpwn/aerc/lib"
"git.sr.ht/~sircmpwn/aerc/lib/ui"
+ "git.sr.ht/~sircmpwn/aerc/models"
)
type Aerc struct {
@@ -432,7 +433,7 @@ func (aerc *Aerc) Mailto(addr *url.URL) error {
}
}
composer, err := NewComposer(aerc, aerc.Config(),
- acct.AccountConfig(), acct.Worker(), "", defaults)
+ acct.AccountConfig(), acct.Worker(), "", defaults, models.OriginalMail{})
if err != nil {
return nil
}
diff --git a/widgets/compose.go b/widgets/compose.go
index 091eb70..636dcd1 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -26,6 +26,7 @@ import (
"git.sr.ht/~sircmpwn/aerc/config"
"git.sr.ht/~sircmpwn/aerc/lib/templates"
"git.sr.ht/~sircmpwn/aerc/lib/ui"
+ "git.sr.ht/~sircmpwn/aerc/models"
"git.sr.ht/~sircmpwn/aerc/worker/types"
)
@@ -59,7 +60,7 @@ type Composer struct {
func NewComposer(aerc *Aerc, conf *config.AercConfig,
acct *config.AccountConfig, worker *types.Worker, template string,
- defaults map[string]string) (*Composer, error) {
+ defaults map[string]string, original models.OriginalMail) (*Composer, error) {
if defaults == nil {
defaults = make(map[string]string)
@@ -68,7 +69,7 @@ func NewComposer(aerc *Aerc, conf *config.AercConfig,
defaults["From"] = acct.From
}
- templateData := templates.ParseTemplateData(defaults)
+ templateData := templates.ParseTemplateData(defaults, original)
cmpl := completer.New(conf.Compose.AddressBookCmd, func(err error) {
aerc.PushError(fmt.Sprintf("could not complete header: %v", err))
worker.Logger.Printf("could not complete header: %v", err)