summaryrefslogtreecommitdiff
path: root/src/Erebos/Conversation.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-01-31 17:48:55 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-01-31 20:42:22 +0100
commit0c36f490719f613dc23b6632a4098bd17fb0ab7c (patch)
tree895014981fe22b57b73fe63aba6918520341e5aa /src/Erebos/Conversation.hs
parent0c1f276f3bfc2f25653d1cd7a75b59d9f6afd522 (diff)
Data structure for formatted text
Diffstat (limited to 'src/Erebos/Conversation.hs')
-rw-r--r--src/Erebos/Conversation.hs21
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