diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-06-18 21:53:46 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-06-19 21:22:59 +0200 |
| commit | 3e1686f2cc593afabc6c784b0c37316df784d1d8 (patch) | |
| tree | c931db8b0e77cd0c460ade434d2f81d2c0cb2e15 /src/Erebos | |
| parent | 962e1ba9ffa0c4c6f038ce1b64925e637a3cbc76 (diff) | |
Constructor for empty direct message thread
Diffstat (limited to 'src/Erebos')
| -rw-r--r-- | src/Erebos/Conversation.hs | 2 | ||||
| -rw-r--r-- | src/Erebos/DirectMessage.hs | 12 |
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 |