create OriginalMail struct
This commit is contained in:
parent
da6fb1a155
commit
bf28e23933
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue