From c655afa32bea3208885386cc3e600d19c934dd39 Mon Sep 17 00:00:00 2001 From: Srivathsan Murali Date: Tue, 12 Nov 2019 12:50:00 +0100 Subject: Complete the F rune. %F now shows the auth name or recepient name/address if the message is from you. --- lib/format/format.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'lib/format/format.go') 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 { -- cgit v1.2.3