diff options
Diffstat (limited to 'src/Erebos')
-rw-r--r-- | src/Erebos/Conversation.hs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Erebos/Conversation.hs b/src/Erebos/Conversation.hs index 187fddd..1e3bad4 100644 --- a/src/Erebos/Conversation.hs +++ b/src/Erebos/Conversation.hs @@ -7,6 +7,7 @@ module Erebos.Conversation ( formatMessage, Conversation, + isSameConversation, directMessageConversation, chatroomConversation, chatroomConversationByStateData, @@ -35,6 +36,8 @@ import Erebos.DirectMessage import Erebos.Identity import Erebos.State import Erebos.Storable +import Erebos.Storage.Merge +import Erebos.Util data Message = DirectMessageMessage DirectMessage Bool @@ -64,8 +67,17 @@ formatMessage tzone msg = concat ] -data Conversation = DirectMessageConversation DirectMessageThread - | ChatroomConversation ChatroomState +data Conversation + = DirectMessageConversation DirectMessageThread + | ChatroomConversation ChatroomState + +isSameConversation :: Conversation -> Conversation -> Bool +isSameConversation (DirectMessageConversation t) (DirectMessageConversation t') + = sameIdentity (msgPeer t) (msgPeer t') +isSameConversation (ChatroomConversation c) (ChatroomConversation c') + = let roots = filterAncestors . concatMap storedRoots . roomStateData + in intersectsSorted (roots c) (roots c') +isSameConversation _ _ = False directMessageConversation :: MonadHead LocalState m => ComposedIdentity -> m Conversation directMessageConversation peer = do |