diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-28 11:43:59 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-28 11:43:59 +0200 |
commit | ae235831a83eb80910ad58f9a324a688ce5e2e47 (patch) | |
tree | 039872f5fb7b1600670ae801c74066efabb98b90 /src/Erebos | |
parent | e43bdb1b58d68916524e7efa10df40f39edebe71 (diff) |
Conversation: isSameConversation function
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 |