summaryrefslogtreecommitdiff
path: root/src/Erebos/Chatroom.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Erebos/Chatroom.hs')
-rw-r--r--src/Erebos/Chatroom.hs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Erebos/Chatroom.hs b/src/Erebos/Chatroom.hs
index 74456ff..f9bf545 100644
--- a/src/Erebos/Chatroom.hs
+++ b/src/Erebos/Chatroom.hs
@@ -17,6 +17,7 @@ module Erebos.Chatroom (
joinChatroomAs, joinChatroomAsByStateData,
leaveChatroom, leaveChatroomByStateData,
getMessagesSinceState,
+ isSameChatroom,
ChatroomSetChange(..),
watchChatrooms,
@@ -294,8 +295,7 @@ createChatroom rdName rdDescription = do
}
updateLocalState $ updateSharedState $ \rooms -> do
- st <- getStorage
- (, cstate) <$> storeSetAdd st cstate rooms
+ (, cstate) <$> storeSetAdd cstate rooms
findAndUpdateChatroomState
:: (MonadStorage m, MonadHead LocalState m)
@@ -309,8 +309,7 @@ findAndUpdateChatroomState f = do
upd <- act
if roomStateData orig /= roomStateData upd
then do
- st <- getStorage
- roomSet' <- storeSetAdd st upd roomSet
+ roomSet' <- storeSetAdd upd roomSet
return (roomSet', Just upd)
else do
return (roomSet, Just upd)
@@ -422,6 +421,11 @@ leaveChatroomByStateData lookupData = sendRawChatroomMessageByStateData lookupDa
getMessagesSinceState :: ChatroomState -> ChatroomState -> [ChatMessage]
getMessagesSinceState cur old = threadToListSince (roomStateMessageData old) (roomStateMessageData cur)
+isSameChatroom :: ChatroomState -> ChatroomState -> Bool
+isSameChatroom rstate rstate' =
+ let roots = filterAncestors . concatMap storedRoots . roomStateData
+ in intersectsSorted (roots rstate) (roots rstate')
+
data ChatroomSetChange = AddedChatroom ChatroomState
| RemovedChatroom ChatroomState