diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-05-30 10:13:50 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-05-30 10:13:50 +0200 |
| commit | e590ad0f1bc378a3149cb66a0dce2200d34ddefb (patch) | |
| tree | 210d28dddf10b17c0bd7c876bb8d72447ab0320d | |
| parent | 791c532682578c0dd1a0e3779f36ccfbced93d60 (diff) | |
Extend ConversationType class to provide number of removed messages
| -rw-r--r-- | src/Erebos/Chatroom.hs | 2 | ||||
| -rw-r--r-- | src/Erebos/Conversation.hs | 2 | ||||
| -rw-r--r-- | src/Erebos/Conversation/Class.hs | 5 | ||||
| -rw-r--r-- | src/Erebos/DirectMessage.hs | 2 |
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) |