diff options
Diffstat (limited to 'src/Erebos/Conversation.hs')
| -rw-r--r-- | src/Erebos/Conversation.hs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/Erebos/Conversation.hs b/src/Erebos/Conversation.hs index 2c6f967..a48daf7 100644 --- a/src/Erebos/Conversation.hs +++ b/src/Erebos/Conversation.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE OverloadedStrings #-} + module Erebos.Conversation ( Message, messageFrom, @@ -5,6 +7,7 @@ module Erebos.Conversation ( messageText, messageUnread, formatMessage, + formatMessageFT, Conversation, isSameConversation, @@ -38,6 +41,8 @@ import Erebos.DirectMessage import Erebos.Identity import Erebos.State import Erebos.Storable +import Erebos.TextFormat +import Erebos.TextFormat.Types data Message = forall conv msg. ConversationType conv msg => Message msg Bool @@ -58,13 +63,15 @@ messageUnread :: Message -> Bool messageUnread (Message _ unread) = unread formatMessage :: TimeZone -> Message -> String -formatMessage tzone msg = concat - [ if messageUnread msg then "\ESC[93m" else "" - , formatTime defaultTimeLocale "[%H:%M] " $ utcToLocalTime tzone $ zonedTimeToUTC $ messageTime msg - , maybe "<unnamed>" T.unpack $ idName $ messageFrom msg - , maybe "" ((": "<>) . T.unpack) $ messageText msg - , if messageUnread msg then "\ESC[0m" else "" - ] +formatMessage tzone = T.unpack . renderPlainText . formatMessageFT tzone + +formatMessageFT :: TimeZone -> Message -> FormattedText +formatMessageFT tzone msg = + (if messageUnread msg then FormattedText (CustomTextColor (Just BrightYellow) Nothing) else id) $ mconcat + [ PlainText $ T.pack $ formatTime defaultTimeLocale "[%H:%M] " $ utcToLocalTime tzone $ zonedTimeToUTC $ messageTime msg + , maybe "<unnamed>" PlainText $ idName $ messageFrom msg + , maybe "" ((": " <>) . PlainText) $ messageText msg + ] data Conversation |