From ecb02e0bfce0f6341c01bfd907f899389bf34aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Tue, 17 Feb 2026 20:22:45 +0100 Subject: =?UTF-8?q?Format=20messages=20using=20multiple=20=E2=80=98span?= =?UTF-8?q?=E2=80=99=20elements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 "" 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" -- cgit v1.2.3