From e590ad0f1bc378a3149cb66a0dce2200d34ddefb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 30 May 2026 10:13:50 +0200 Subject: Extend ConversationType class to provide number of removed messages --- src/Erebos/Chatroom.hs | 2 +- src/Erebos/Conversation.hs | 2 +- src/Erebos/Conversation/Class.hs | 5 ++++- src/Erebos/DirectMessage.hs | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src/Erebos') 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) -- cgit v1.2.3