diff options
author | Srivathsan Murali <sri@vathsan.com> | 2019-11-12 12:50:00 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-11-17 13:19:20 -0500 |
commit | c655afa32bea3208885386cc3e600d19c934dd39 (patch) | |
tree | 15ab3b45ba905339558ae3d5a64eeca6abb13659 /lib/format/format.go | |
parent | 4bdef7d8609aa2d382fa74018e28ccb176276615 (diff) |
Complete the F rune.
%F now shows the auth name or recepient name/address if the
message is from you.
Diffstat (limited to 'lib/format/format.go')
-rw-r--r-- | lib/format/format.go | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/lib/format/format.go b/lib/format/format.go index b403f2d..a070bc9 100644 --- a/lib/format/format.go +++ b/lib/format/format.go @@ -3,18 +3,32 @@ package format import ( "errors" "fmt" + gomail "net/mail" "strings" "unicode" "git.sr.ht/~sircmpwn/aerc/models" ) -func ParseMessageFormat(format string, timestampformat string, +func parseAddress(address string) *gomail.Address { + addrs, err := gomail.ParseAddress(address) + if err != nil { + return nil + } + + return addrs +} + +func ParseMessageFormat( + fromAddress string, + format string, timestampformat string, accountName string, number int, msg *models.MessageInfo) (string, []interface{}, error) { retval := make([]byte, 0, len(format)) var args []interface{} + accountFromAddress := parseAddress(fromAddress) + var c rune for i, ni := 0, 0; i < len(format); { ni = strings.IndexByte(format[i:], '%') @@ -109,9 +123,12 @@ func ParseMessageFormat(format string, timestampformat string, errors.New("found no address for sender") } addr := msg.Envelope.From[0] - // TODO: handle case when sender is current user. Then - // use recipient's name var val string + + if addr.Name == accountFromAddress.Name { + addr = msg.Envelope.To[0] + } + if addr.Name != "" { val = addr.Name } else { |