summaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-02-17 20:22:45 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-02-17 20:22:45 +0100
commitecb02e0bfce0f6341c01bfd907f899389bf34aa5 (patch)
tree0330df306896b9c3cce6558d5c478e7746099083 /src/Main.hs
parentc3d5c3d17058efb7c20d05f18a6b713c674552d8 (diff)
Format messages using multiple ‘span’ elements
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 0a87665..2a13349 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -12,6 +12,7 @@ import Data.Proxy
import Data.Text (Text)
import Data.Text qualified as T
import Data.Text.Encoding
+import Data.Time.Format
import Data.Time.LocalTime
import GHC.Wasm.Prim
@@ -336,8 +337,18 @@ appendMessages GlobalState {..} ul msgs = do
tzone <- getCurrentTimeZone
mbSelf <- join . fmap (lookupSharedValue @(Maybe ComposedIdentity) . lsShared . headObject) <$> reloadHead globalHead
forM_ msgs $ \msg -> do
+ let parts =
+ [ ( "msg-time", formatTime defaultTimeLocale "%H:%M" $ utcToLocalTime tzone $ zonedTimeToUTC $ either msgTime messageTime msg )
+ , ( "msg-from", maybe "<unnamed>" T.unpack $ idName $ either msgFrom messageFrom msg )
+ , ( "msg-text", maybe "" T.unpack $ either (Just . msgText) messageText msg )
+ ]
li <- js_document_createElement (toJSString "li")
- js_set_textContent li $ toJSString $ either (formatDirectMessage tzone) (formatMessage tzone) msg
+ forM_ parts $ \( cls, content ) -> do
+ element <- js_document_createElement (toJSString "span")
+ js_classList_add element $ toJSString cls
+ js_set_textContent element $ toJSString content
+ js_appendChild li element
+
case mbSelf of
Just self -> js_classList_add li $
if either msgFrom messageFrom msg `sameIdentity` self then toJSString "sent" else toJSString "received"