summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-06-18 21:53:46 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-06-19 21:22:59 +0200
commit3e1686f2cc593afabc6c784b0c37316df784d1d8 (patch)
treec931db8b0e77cd0c460ade434d2f81d2c0cb2e15
parent962e1ba9ffa0c4c6f038ce1b64925e637a3cbc76 (diff)
Constructor for empty direct message thread
-rw-r--r--src/Erebos/Conversation.hs2
-rw-r--r--src/Erebos/DirectMessage.hs12
2 files changed, 12 insertions, 2 deletions
diff --git a/src/Erebos/Conversation.hs b/src/Erebos/Conversation.hs
index c9a3b59..365f8de 100644
--- a/src/Erebos/Conversation.hs
+++ b/src/Erebos/Conversation.hs
@@ -102,7 +102,7 @@ directMessageConversation peer = do
createOrUpdateDirectMessagePeer peer
(find (sameIdentity peer . msgPeer) . dmThreadList . lookupSharedValue . lsShared . fromStored <$> getLocalHead) >>= \case
Just thread -> return $ DirectMessageConversation thread
- Nothing -> return $ DirectMessageConversation $ DirectMessageThread peer [] [] [] []
+ Nothing -> return $ DirectMessageConversation $ dmEmptyThread peer
chatroomConversation :: MonadHead LocalState m => ChatroomState -> m (Maybe Conversation)
chatroomConversation rstate = chatroomConversationByStateData (head $ roomStateData rstate)
diff --git a/src/Erebos/DirectMessage.hs b/src/Erebos/DirectMessage.hs
index 2108587..6705dec 100644
--- a/src/Erebos/DirectMessage.hs
+++ b/src/Erebos/DirectMessage.hs
@@ -11,7 +11,8 @@ module Erebos.DirectMessage (
DirectMessageThreads,
dmThreadList,
- DirectMessageThread(..),
+ DirectMessageThread(msgPeer, msgHead, msgSent, msgSeen, msgReceived),
+ dmEmptyThread,
dmThreadToList, dmThreadToListSince, dmThreadToListUnread, dmThreadToListSinceUnread,
dmThreadToListChange,
dmThreadView,
@@ -325,6 +326,15 @@ data DirectMessageThread = DirectMessageThread
, msgReceived :: [ Stored DirectMessage ]
}
+dmEmptyThread :: ComposedIdentity -> DirectMessageThread
+dmEmptyThread peer = DirectMessageThread
+ { msgPeer = peer
+ , msgHead = []
+ , msgSent = []
+ , msgSeen = []
+ , msgReceived = []
+ }
+
dmThreadToList :: DirectMessageThread -> [ DirectMessage ]
dmThreadToList thread = map fst $ threadToListHelper (msgSeen thread) S.empty $ msgHead thread