core, ui: allow to delete member support chat; rename reject action (#5927)

This commit is contained in:
spaced4ndy
2025-05-20 09:07:44 +00:00
committed by GitHub
parent ca9f6267e4
commit 1a80ecfc29
15 changed files with 212 additions and 48 deletions
+31
View File
@@ -80,6 +80,7 @@ module Simplex.Chat.Store.Groups
updateGroupMemberStatus,
updateGroupMemberStatusById,
updateGroupMemberAccepted,
deleteGroupMemberSupportChat,
updateGroupMembersRequireAttention,
decreaseGroupMembersRequireAttention,
increaseGroupMembersRequireAttention,
@@ -1231,6 +1232,36 @@ updateGroupMemberAccepted db User {userId} m@GroupMember {groupMemberId} status
(status, role, currentTs, userId, groupMemberId)
pure m {memberStatus = status, memberRole = role, updatedAt = currentTs}
deleteGroupMemberSupportChat :: DB.Connection -> User -> GroupInfo -> GroupMember -> IO (GroupInfo, GroupMember)
deleteGroupMemberSupportChat db user@User {userId} g@GroupInfo {groupId, membersRequireAttention} m@GroupMember {groupMemberId, supportChat} = do
let requiredAttention = gmRequiresAttention m
currentTs <- getCurrentTime
DB.execute
db
[sql|
DELETE FROM chat_items
WHERE group_scope_group_member_id = ?
|]
(Only groupMemberId)
DB.execute
db
[sql|
UPDATE group_members
SET support_chat_ts = NULL,
support_chat_items_unread = 0,
support_chat_items_member_attention = 0,
support_chat_items_mentions = 0,
support_chat_last_msg_from_member_ts = NULL,
updated_at = ?
WHERE group_member_id = ?
|]
(currentTs, groupMemberId)
let m' = m {supportChat = Nothing, updatedAt = currentTs}
g' <- if requiredAttention
then decreaseGroupMembersRequireAttention db user g
else pure g
pure (g', m')
updateGroupMembersRequireAttention :: DB.Connection -> User -> GroupInfo -> GroupMember -> GroupMember -> IO GroupInfo
updateGroupMembersRequireAttention db user g member member'
| nowRequires && not didRequire =
@@ -3482,6 +3482,21 @@ Query:
Plan:
SEARCH group_members USING INTEGER PRIMARY KEY (rowid=?)
Query:
DELETE FROM chat_items
WHERE group_scope_group_member_id = ?
Plan:
SEARCH chat_items USING COVERING INDEX idx_chat_items_group_scope_group_member_id (group_scope_group_member_id=?)
SEARCH chat_item_mentions USING COVERING INDEX idx_chat_item_mentions_chat_item_id (chat_item_id=?)
SEARCH group_snd_item_statuses USING COVERING INDEX idx_group_snd_item_statuses_chat_item_id (chat_item_id=?)
SEARCH chat_item_versions USING COVERING INDEX idx_chat_item_versions_chat_item_id (chat_item_id=?)
SEARCH calls USING COVERING INDEX idx_calls_chat_item_id (chat_item_id=?)
SEARCH chat_item_messages USING COVERING INDEX sqlite_autoindex_chat_item_messages_2 (chat_item_id=?)
SEARCH chat_items USING COVERING INDEX idx_chat_items_fwd_from_chat_item_id (fwd_from_chat_item_id=?)
SEARCH files USING COVERING INDEX idx_files_chat_item_id (chat_item_id=?)
SEARCH groups USING COVERING INDEX idx_groups_chat_item_id (chat_item_id=?)
Query:
DELETE FROM chat_items
WHERE user_id = ? AND contact_id = ? AND chat_item_id = ?
@@ -4405,6 +4420,19 @@ Query:
Plan:
SEARCH group_members USING INTEGER PRIMARY KEY (rowid=?)
Query:
UPDATE group_members
SET support_chat_ts = NULL,
support_chat_items_unread = 0,
support_chat_items_member_attention = 0,
support_chat_items_mentions = 0,
support_chat_last_msg_from_member_ts = NULL,
updated_at = ?
WHERE group_member_id = ?
Plan:
SEARCH group_members USING INTEGER PRIMARY KEY (rowid=?)
Query:
UPDATE group_profiles
SET preferences = ?, updated_at = ?