summaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-08-03 09:48:04 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2025-08-03 09:48:04 +0200
commit6f688efd9771e2cfad459bf55d73cf53cadcc14d (patch)
treebb25e21e612eb9fb27848e97b8466f887dbcd787 /src/Main.hs
parent4435f2d329c1781e262a963c2e8d4ad7fea2eb7a (diff)
Use watchDirectMessageThreads to update current conversation
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 504fc00..aee8dfe 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -144,11 +144,18 @@ setup = do
messagesList <- JS.getElementById "msg_list"
tzone <- getCurrentTimeZone
- void $ watchReceivedMessages globalHead $ \msg -> do
- li <- js_document_createElement (toJSString "li")
- js_set_textContent li $ toJSString $ formatDirectMessage tzone $ fromStored msg
- ul <- js_get_firstChild messagesList
- js_appendChild ul li
+ void $ watchDirectMessageThreads globalHead $ \prev cur -> do
+ withMVar currentConversationVar $ \case
+ SelectedConversation conv
+ | maybe False (msgPeer cur `sameIdentity`) (conversationPeer conv)
+ -> do
+ forM_ (reverse $ dmThreadToListSince prev cur) $ \msg -> do
+ li <- js_document_createElement (toJSString "li")
+ js_set_textContent li $ toJSString $ formatDirectMessage tzone msg
+ ul <- js_get_firstChild messagesList
+ js_appendChild ul li
+
+ _ -> return ()
sendText <- JS.getElementById "msg_text"
sendForm <- JS.getElementById "msg_form"