core: return member records from apiGetReactionMembers (#5270)

This commit is contained in:
spaced4ndy
2024-11-28 13:49:20 +04:00
committed by GitHub
parent 13efdf2595
commit 68be4b4ba5
3 changed files with 11 additions and 8 deletions
+1 -1
View File
@@ -1081,7 +1081,7 @@ processChatCommand' vr = \case
APIGetReactionMembers userId groupId itemId reaction -> withUserId userId $ \user -> do
memberReactions <- withStore $ \db -> do
CChatItem _ ChatItem {meta = CIMeta {itemSharedMsgId = Just itemSharedMId}} <- getGroupChatItem db user groupId itemId
liftIO $ getReactionMembers db groupId itemSharedMId reaction
liftIO $ getReactionMembers db vr user groupId itemSharedMId reaction
pure $ CRReactionMembers user memberReactions
APIPlanForwardChatItems (ChatRef fromCType fromChatId) itemIds -> withUser $ \user -> case fromCType of
CTDirect -> planForward user . snd =<< getCommandDirectChatItems user fromChatId itemIds
+1 -1
View File
@@ -475,7 +475,7 @@ deriving instance Show ACIReaction
data JSONCIReaction c d = JSONCIReaction {chatInfo :: ChatInfo c, chatReaction :: CIReaction c d}
data MemberReaction = MemberReaction
{ groupMemberId :: GroupMemberId,
{ groupMember :: GroupMember,
reactionTs :: UTCTime
}
deriving (Show)
+9 -6
View File
@@ -2853,10 +2853,10 @@ setGroupReaction db GroupInfo {groupId} m itemMemberId itemSharedMId sent reacti
|]
(groupId, groupMemberId' m, itemSharedMId, itemMemberId, sent, reaction)
getReactionMembers :: DB.Connection -> GroupId -> SharedMsgId -> MsgReaction -> IO [MemberReaction]
getReactionMembers db groupId itemSharedMId reaction =
map toMemberReaction
<$> DB.query
getReactionMembers :: DB.Connection -> VersionRangeChat -> User -> GroupId -> SharedMsgId -> MsgReaction -> IO [MemberReaction]
getReactionMembers db vr user groupId itemSharedMId reaction = do
reactions <-
DB.query
db
[sql|
SELECT group_member_id, reaction_ts
@@ -2864,9 +2864,12 @@ getReactionMembers db groupId itemSharedMId reaction =
WHERE group_id = ? AND shared_msg_id = ? AND reaction = ?
|]
(groupId, itemSharedMId, reaction)
rights <$> mapM (runExceptT . toMemberReaction) reactions
where
toMemberReaction :: (GroupMemberId, UTCTime) -> MemberReaction
toMemberReaction (groupMemberId, reactionTs) = MemberReaction {groupMemberId, reactionTs}
toMemberReaction :: (GroupMemberId, UTCTime) -> ExceptT StoreError IO MemberReaction
toMemberReaction (groupMemberId, reactionTs) = do
groupMember <- getGroupMemberById db vr user groupMemberId
pure MemberReaction {groupMember, reactionTs}
getTimedItems :: DB.Connection -> User -> UTCTime -> IO [((ChatRef, ChatItemId), UTCTime)]
getTimedItems db User {userId} startTimedThreadCutoff =