mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-23 00:02:28 +00:00
core: inline report archiving, matching the moderation paths
Review fix: archiveMembersReports duplicated a pattern the moderation paths already inline (delGroupChatItems) or keep as a local where-helper (archiveMessageReports), so Internal.hs is no longer touched and the member list and byUser parameters are gone. markMemberReportsDeleted takes its own timestamp, as its caller shares none.
This commit is contained in:
1 parent
70ae7f9f94
commit
833e1104ae
4 files changed
+8
-14
No files matched your search
@@ -3175,7 +3175,8 @@ processChatCommand cxt nm = \case
|
||||
if groupFeatureUserAllowed SGFFullDelete gInfo
|
||||
then deleteGroupMembersCIs user gInfo ms
|
||||
else markGroupMembersCIsDeleted user gInfo ms membership
|
||||
archiveMembersReports user gInfo ms membership True
|
||||
ciIds <- concat <$> withStore' (\db -> forM ms $ \m -> markMemberReportsDeleted db user gInfo m membership)
|
||||
unless (null ciIds) $ toView $ CEvtGroupChatItemsDeleted user gInfo ciIds True (Just membership)
|
||||
APILeaveGroup groupId -> withUser $ \user@User {userId} -> do
|
||||
gInfo@GroupInfo {membership} <- withFastStore $ \db -> getGroupInfo db cxt user groupId
|
||||
filesInfo <- withFastStore' $ \db -> getGroupFileInfo db user gInfo
|
||||
|
||||
@@ -647,14 +647,6 @@ markGroupMembersCIsDeleted user gInfo members byGroupMember = do
|
||||
filesInfo <- withStore' $ \db -> fmap concat $ forM members $ \m -> markGroupMemberCIsDeleted_ db user gInfo m byGroupMember deletedTs
|
||||
cancelFilesInProgress user filesInfo
|
||||
|
||||
-- Reports about a member's messages are authored by the reporter, so deleting the member's own
|
||||
-- chat items never reaches them - they have to be archived separately, as moderation does.
|
||||
archiveMembersReports :: User -> GroupInfo -> [GroupMember] -> GroupMember -> Bool -> CM ()
|
||||
archiveMembersReports user gInfo members byGroupMember byUser = do
|
||||
deletedTs <- liftIO getCurrentTime
|
||||
ciIds <- concat <$> withStore' (\db -> forM members $ \m -> markMemberReportsDeleted db user gInfo m byGroupMember deletedTs)
|
||||
unless (null ciIds) $ toView $ CEvtGroupChatItemsDeleted user gInfo ciIds byUser (Just byGroupMember)
|
||||
|
||||
markGroupMemberCIsDeleted_ :: DB.Connection -> User -> GroupInfo -> GroupMember -> GroupMember -> UTCTime -> IO [CIFileInfo]
|
||||
markGroupMemberCIsDeleted_ db user gInfo member byGroupMember deletedTs = do
|
||||
fs <- getGroupMemberFileInfo db user gInfo member
|
||||
|
||||
@@ -3658,7 +3658,8 @@ processAgentMessageConn cxt user@User {userId} corrId agentConnId agentMessage =
|
||||
if groupFeatureMemberAllowed SGFFullDelete m gInfo'
|
||||
then deleteGroupMemberCIs user gInfo' delMem
|
||||
else markGroupMemberCIsDeleted user gInfo' delMem m
|
||||
archiveMembersReports user gInfo' [delMem] m False
|
||||
ciIds <- withStore' $ \db -> markMemberReportsDeleted db user gInfo' delMem m
|
||||
unless (null ciIds) $ toView $ CEvtGroupChatItemsDeleted user gInfo' ciIds False (Just m)
|
||||
forwardToMember :: GroupMember -> CM ()
|
||||
forwardToMember member =
|
||||
let fwd = GrpMsgForward {fwdSender = FwdMember (memberId' m) (memberShortenedName m), fwdBrokerTs = brokerTs}
|
||||
|
||||
@@ -3025,9 +3025,9 @@ markMessageReportsDeleted db User {userId} GroupInfo {groupId} ChatItem {meta =
|
||||
|]
|
||||
(DBCIDeleted, deletedTs, groupMemberId, currentTs, userId, groupId, MCReport_, itemSharedMsgId, DBCINotDeleted)
|
||||
|
||||
markMemberReportsDeleted :: DB.Connection -> User -> GroupInfo -> GroupMember -> GroupMember -> UTCTime -> IO [ChatItemId]
|
||||
markMemberReportsDeleted db User {userId} GroupInfo {groupId} reportedMember byGroupMember deletedTs = do
|
||||
currentTs <- liftIO getCurrentTime
|
||||
markMemberReportsDeleted :: DB.Connection -> User -> GroupInfo -> GroupMember -> GroupMember -> IO [ChatItemId]
|
||||
markMemberReportsDeleted db User {userId} GroupInfo {groupId} reportedMember byGroupMember = do
|
||||
deletedTs <- getCurrentTime
|
||||
map fromOnly
|
||||
<$> DB.query
|
||||
db
|
||||
@@ -3037,7 +3037,7 @@ markMemberReportsDeleted db User {userId} GroupInfo {groupId} reportedMember byG
|
||||
WHERE user_id = ? AND group_id = ? AND msg_content_tag = ? AND quoted_member_id = ? AND item_deleted = ?
|
||||
RETURNING chat_item_id;
|
||||
|]
|
||||
(DBCIDeleted, deletedTs, groupMemberId' byGroupMember, currentTs, userId, groupId, MCReport_, memberId' reportedMember, DBCINotDeleted)
|
||||
(DBCIDeleted, deletedTs, groupMemberId' byGroupMember, deletedTs, userId, groupId, MCReport_, memberId' reportedMember, DBCINotDeleted)
|
||||
|
||||
markReceivedGroupReportsDeleted :: DB.Connection -> User -> GroupInfo -> UTCTime -> IO [ChatItemId]
|
||||
markReceivedGroupReportsDeleted db User {userId} GroupInfo {groupId, membership} deletedTs = do
|
||||
|
||||
Reference in new issue
Block a user