Support configurable header layout in compose widget

This commit is contained in:
Daniel Bridges 2019-07-22 16:29:07 -07:00 committed by Drew DeVault
commit 67fb0938a6
10 changed files with 240 additions and 169 deletions

View file

@ -27,9 +27,9 @@ func (_ Compose) Execute(aerc *widgets.Aerc, args []string) error {
}
acct := aerc.SelectedAccount()
composer := widgets.NewComposer(
aerc.Config(), acct.AccountConfig(), acct.Worker())
aerc.Config(), acct.AccountConfig(), acct.Worker(), nil)
tab := aerc.NewTab(composer, "New email")
composer.OnSubjectChange(func(subject string) {
composer.OnHeaderChange("Subject", func(subject string) {
if subject == "" {
tab.Name = "New email"
} else {

View file

@ -113,14 +113,15 @@ func (_ reply) Execute(aerc *widgets.Aerc, args []string) error {
}
}
defaults := map[string]string{
"To": strings.Join(to, ", "),
"Cc": strings.Join(cc, ", "),
"Subject": subject,
"In-Reply-To": msg.Envelope.MessageId,
}
composer := widgets.NewComposer(
aerc.Config(), acct.AccountConfig(), acct.Worker()).
Defaults(map[string]string{
"To": strings.Join(to, ", "),
"Cc": strings.Join(cc, ", "),
"Subject": subject,
"In-Reply-To": msg.Envelope.MessageId,
})
aerc.Config(), acct.AccountConfig(), acct.Worker(), defaults)
if args[0] == "reply" {
composer.FocusTerminal()
@ -128,7 +129,7 @@ func (_ reply) Execute(aerc *widgets.Aerc, args []string) error {
addTab := func() {
tab := aerc.NewTab(composer, subject)
composer.OnSubjectChange(func(subject string) {
composer.OnHeaderChange("Subject", func(subject string) {
if subject == "" {
tab.Name = "New email"
} else {

View file

@ -83,15 +83,19 @@ func parseUnsubscribeMethods(header string) (methods []*url.URL) {
func unsubscribeMailto(aerc *widgets.Aerc, u *url.URL) error {
widget := aerc.SelectedTab().(widgets.ProvidesMessage)
acct := widget.SelectedAccount()
composer := widgets.NewComposer(aerc.Config(), acct.AccountConfig(),
acct.Worker())
composer.Defaults(map[string]string{
defaults := map[string]string{
"To": u.Opaque,
"Subject": u.Query().Get("subject"),
})
}
composer := widgets.NewComposer(
aerc.Config(),
acct.AccountConfig(),
acct.Worker(),
defaults,
)
composer.SetContents(strings.NewReader(u.Query().Get("body")))
tab := aerc.NewTab(composer, "unsubscribe")
composer.OnSubjectChange(func(subject string) {
composer.OnHeaderChange("Subject", func(subject string) {
if subject == "" {
tab.Name = "unsubscribe"
} else {