diff options
| -rw-r--r-- | commands/account/compose.go | 4 | ||||
| -rw-r--r-- | commands/msg/forward.go | 10 | ||||
| -rw-r--r-- | commands/msg/reply.go | 9 | ||||
| -rw-r--r-- | commands/msg/unsubscribe.go | 2 | ||||
| -rw-r--r-- | lib/templates/template.go | 28 | ||||
| -rw-r--r-- | models/models.go | 7 | ||||
| -rw-r--r-- | widgets/aerc.go | 3 | ||||
| -rw-r--r-- | widgets/compose.go | 5 | 
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)  | 
