summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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