diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-01-31 17:48:55 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-01-31 20:42:22 +0100 |
| commit | 0c36f490719f613dc23b6632a4098bd17fb0ab7c (patch) | |
| tree | 895014981fe22b57b73fe63aba6918520341e5aa /src/Erebos/Conversation.hs | |
| parent | 0c1f276f3bfc2f25653d1cd7a75b59d9f6afd522 (diff) | |
Data structure for formatted text
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 |