diff options
author | Robin Jarry <robin@jarry.cc> | 2023-07-08 22:49:21 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-07-17 10:24:24 +0200 |
commit | 81f523791c0e9bdb3b20b50eefaf5c96c94128bb (patch) | |
tree | d424d7e23fecf3ace4832dd9a8d6e755016cf86b | |
parent | 4c514ce4d15fd14cad528cf426bc3f853efe7f64 (diff) | |
download | aerc-81f523791c0e9bdb3b20b50eefaf5c96c94128bb.tar.gz aerc-81f523791c0e9bdb3b20b50eefaf5c96c94128bb.zip |
compose: only add signature if missing
Allow putting signatures in the templates. Do not add a duplicate
signature during :recall and :recover.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Tested-by: Koni Marti <koni.marti@gmail.com>
-rw-r--r-- | widgets/compose.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/widgets/compose.go b/widgets/compose.go index 2b8cbb12..d1bbc547 100644 --- a/widgets/compose.go +++ b/widgets/compose.go @@ -107,7 +107,11 @@ func NewComposer( if err := c.addTemplate(template, data.Data(), body); err != nil { return nil, err } - c.AddSignature() + if sig, err := c.HasSignature(); !sig && err == nil { + c.AddSignature() + } else if err != nil { + return nil, err + } if err := c.setupFor(acct); err != nil { return nil, err @@ -593,6 +597,22 @@ func (c *Composer) addTemplate( return c.setContents(part.Body) } +func (c *Composer) HasSignature() (bool, error) { + buf, err := c.GetBody() + if err != nil { + return false, err + } + found := false + scanner := bufio.NewScanner(buf) + for scanner.Scan() { + if scanner.Text() == "-- " { + found = true + break + } + } + return found, scanner.Err() +} + func (c *Composer) AddSignature() { var signature []byte if c.acctConfig.SignatureCmd != "" { |