summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-05-30 10:13:50 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-05-30 10:13:50 +0200
commite590ad0f1bc378a3149cb66a0dce2200d34ddefb (patch)
tree210d28dddf10b17c0bd7c876bb8d72447ab0320d /src
parent791c532682578c0dd1a0e3779f36ccfbced93d60 (diff)
Extend ConversationType class to provide number of removed messages
Diffstat (limited to 'src')
-rw-r--r--src/Erebos/Chatroom.hs2
-rw-r--r--src/Erebos/Conversation.hs2
-rw-r--r--src/Erebos/Conversation/Class.hs5
-rw-r--r--src/Erebos/DirectMessage.hs2
4 files changed, 7 insertions, 4 deletions
diff --git a/src/Erebos/Chatroom.hs b/src/Erebos/Chatroom.hs
index 11d5643..aa5e3ee 100644
--- a/src/Erebos/Chatroom.hs
+++ b/src/Erebos/Chatroom.hs
@@ -69,7 +69,7 @@ instance ConversationType ChatroomState ChatMessage where
convReference = refDigest . storedRef . head . filterAncestors . concatMap storedRoots . roomStateData
- convMessageListSince mbSince cstate =
+ convMessageListSince mbSince cstate = ( 0, ) $
map (, False) $ threadToListSince (maybe [] roomStateMessageData mbSince) (roomStateMessageData cstate)
diff --git a/src/Erebos/Conversation.hs b/src/Erebos/Conversation.hs
index 20cbf94..1d72f41 100644
--- a/src/Erebos/Conversation.hs
+++ b/src/Erebos/Conversation.hs
@@ -131,7 +131,7 @@ conversationPeer (DirectMessageConversation thread) = Just $ msgPeer thread
conversationPeer (ChatroomConversation _) = Nothing
conversationHistory :: Conversation -> [ Message ]
-conversationHistory = withConversation $ map (uncurry Message) . convMessageListSince Nothing
+conversationHistory = withConversation $ map (uncurry Message) . snd . convMessageListSince Nothing
sendMessage :: (MonadHead LocalState m, MonadError e m, FromErebosError e) => Conversation -> Text -> m ()
diff --git a/src/Erebos/Conversation/Class.hs b/src/Erebos/Conversation/Class.hs
index 77458fa..96a0e6a 100644
--- a/src/Erebos/Conversation/Class.hs
+++ b/src/Erebos/Conversation/Class.hs
@@ -17,4 +17,7 @@ class (Typeable conv, Typeable msg) => ConversationType conv msg | conv -> msg,
convMessageText :: msg -> Maybe Text
convReference :: conv -> RefDigest
- convMessageListSince :: Maybe conv -> conv -> [ ( msg, Bool ) ]
+ convMessageListSince
+ :: Maybe conv -- ^ Original state to diff from
+ -> conv -- ^ Current state
+ -> ( Int, [ ( msg, Bool ) ] ) -- ^ Number of removed, list of added messages
diff --git a/src/Erebos/DirectMessage.hs b/src/Erebos/DirectMessage.hs
index dafebce..099ed5c 100644
--- a/src/Erebos/DirectMessage.hs
+++ b/src/Erebos/DirectMessage.hs
@@ -53,7 +53,7 @@ instance ConversationType DirectMessageThread DirectMessage where
convReference = refDigest . storedRef . head . idDataF . msgPeer
- convMessageListSince mbSince thread =
+ convMessageListSince mbSince thread = ( 0, ) $
threadToListHelper (msgSeen thread) (maybe S.empty (S.fromAscList . msgHead) mbSince) (msgHead thread)