core: archive reports after deleting member messages

Review fix: archiving ran before the member's own chat items were
deleted, so a store error in it (withStore' short-circuits CM) would
abort removal after x.grp.mem.del was already sent, leaving the messages
undeleted. The archive predicate uses quoted_member_id on the report row,
which the member's item deletion does not touch, so the order is
otherwise equivalent.
This commit is contained in:
Narasimha-sc committed 2026-09-07 15:23:00 +00:00
1 parent 35d541a5a7
commit 70ae7f9f94
2 files changed
+2 -2

No files matched your search

+1 -1
View File
@@ -3172,10 +3172,10 @@ processChatCommand cxt nm = \case
else void $ deleteOrUpdateMemberRecordIO db user gInfo m
pure m {memberStatus = GSMemRemoved}
deleteMessages user gInfo@GroupInfo {membership} ms = do
archiveMembersReports user gInfo ms membership True
if groupFeatureUserAllowed SGFFullDelete gInfo
then deleteGroupMembersCIs user gInfo ms
else markGroupMembersCIsDeleted user gInfo ms membership
archiveMembersReports user gInfo ms membership True
APILeaveGroup groupId -> withUser $ \user@User {userId} -> do
gInfo@GroupInfo {membership} <- withFastStore $ \db -> getGroupInfo db cxt user groupId
filesInfo <- withFastStore' $ \db -> getGroupFileInfo db user gInfo
+1 -1
View File
@@ -3655,10 +3655,10 @@ processAgentMessageConn cxt user@User {userId} corrId agentConnId agentMessage =
groupMsgToView cInfo ci
deleteMessages :: GroupInfo -> GroupMember -> CM ()
deleteMessages gInfo' delMem = do
archiveMembersReports user gInfo' [delMem] m False
if groupFeatureMemberAllowed SGFFullDelete m gInfo'
then deleteGroupMemberCIs user gInfo' delMem
else markGroupMemberCIsDeleted user gInfo' delMem m
archiveMembersReports user gInfo' [delMem] m False
forwardToMember :: GroupMember -> CM ()
forwardToMember member =
let fwd = GrpMsgForward {fwdSender = FwdMember (memberId' m) (memberShortenedName m), fwdBrokerTs = brokerTs}