diff options
Diffstat (limited to 'lib/format')
-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 { |