aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2023-07-08 22:49:21 +0200
committerRobin Jarry <robin@jarry.cc>2023-07-17 10:24:24 +0200
commit81f523791c0e9bdb3b20b50eefaf5c96c94128bb (patch)
treed424d7e23fecf3ace4832dd9a8d6e755016cf86b
parent4c514ce4d15fd14cad528cf426bc3f853efe7f64 (diff)
downloadaerc-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.go22
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 != "" {