aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/compose.go
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/compose.go')
-rw-r--r--widgets/compose.go36
1 files changed, 30 insertions, 6 deletions
diff --git a/widgets/compose.go b/widgets/compose.go
index b956abc2..d9080d17 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -176,10 +176,14 @@ func (c *Composer) Sent() bool {
return c.sent
}
-func (c *Composer) SetSign(sign bool) *Composer {
+func (c *Composer) SetSign(sign bool) error {
c.sign = sign
- c.updateCrypto()
- return c
+ err := c.updateCrypto()
+ if err != nil {
+ c.sign = !sign
+ return fmt.Errorf("Cannot sign message: %v", err)
+ }
+ return nil
}
func (c *Composer) Sign() bool {
@@ -196,18 +200,36 @@ func (c *Composer) Encrypt() bool {
return c.encrypt
}
-func (c *Composer) updateCrypto() {
+func (c *Composer) updateCrypto() error {
if c.crypto == nil {
c.crypto = newCryptoStatus(&c.config.Ui)
}
+ var err error
+ // Check if signKey is empty so we only run this once
+ if c.sign && c.crypto.signKey == "" {
+ cp := c.aerc.Crypto
+ var s string
+ if c.acctConfig.PgpKeyId != "" {
+ s = c.acctConfig.PgpKeyId
+ } else {
+ s, err = getSenderEmail(c)
+ if err != nil {
+ return err
+ }
+ }
+ c.crypto.signKey, err = cp.GetSignerKeyId(s)
+ if err != nil {
+ return err
+ }
+ }
crHeight := 0
st := ""
switch {
case c.sign && c.encrypt:
- st = "Sign & Encrypt"
+ st = fmt.Sprintf("Sign (%s) & Encrypt", c.crypto.signKey)
crHeight = 1
case c.sign:
- st = "Sign"
+ st = fmt.Sprintf("Sign (%s)", c.crypto.signKey)
crHeight = 1
case c.encrypt:
st = "Encrypt"
@@ -224,6 +246,7 @@ func (c *Composer) updateCrypto() {
{Strategy: ui.SIZE_WEIGHT, Size: ui.Const(1)},
})
c.grid.AddChild(c.crypto).At(1, 0)
+ return nil
}
// Note: this does not reload the editor. You must call this before the first
@@ -1062,6 +1085,7 @@ type cryptoStatus struct {
title string
status *ui.Text
uiConfig *config.UIConfig
+ signKey string
}
func newCryptoStatus(uiConfig *config.UIConfig) *cryptoStatus {