don't let go below 0

This commit is contained in:
spaced4ndy
2025-09-04 16:22:13 +04:00
parent a960020083
commit bf48642f5f
2 changed files with 22 additions and 7 deletions
+4 -1
View File
@@ -1497,7 +1497,10 @@ decreaseGroupMembersRequireAttention db User {userId} g@GroupInfo {groupId, memb
db
[sql|
UPDATE groups
SET members_require_attention = members_require_attention - 1
SET members_require_attention = CASE
WHEN members_require_attention >= 1 THEN members_require_attention - 1
ELSE 0
END
WHERE user_id = ? AND group_id = ?
|]
(userId, groupId)
+18 -6
View File
@@ -427,11 +427,14 @@ updateChatTsStats db vr user@User {userId} chatDirection chatTs chatStats_ = cas
[sql|
UPDATE groups
SET chat_ts = ?,
members_require_attention = members_require_attention - 1
members_require_attention = CASE
WHEN members_require_attention >= 1 THEN members_require_attention - 1
ELSE 0
END
WHERE user_id = ? AND group_id = ?
|]
(chatTs, userId, groupId)
pure $ GroupChat g {membersRequireAttention = membersRequireAttention - 1, chatTs = Just chatTs} (Just $ GCSIMemberSupport (Just member'))
pure $ GroupChat g {membersRequireAttention = max 0 (membersRequireAttention - 1), chatTs = Just chatTs} (Just $ GCSIMemberSupport (Just member'))
| otherwise -> do
DB.execute
db
@@ -2117,13 +2120,22 @@ updateGroupScopeUnreadStats db vr user g@GroupInfo {membership} scopeInfo (unrea
db
[sql|
UPDATE group_members
SET support_chat_items_unread = support_chat_items_unread - ?,
support_chat_items_member_attention = support_chat_items_member_attention - ?,
support_chat_items_mentions = support_chat_items_mentions - ?,
SET support_chat_items_unread = CASE
WHEN support_chat_items_unread >= ? THEN support_chat_items_unread - ?
ELSE 0
END,
support_chat_items_member_attention = CASE
WHEN support_chat_items_member_attention >= ? THEN support_chat_items_member_attention - ?
ELSE 0
END,
support_chat_items_mentions = CASE
WHEN support_chat_items_mentions >= ? THEN support_chat_items_mentions - ?
ELSE 0
END,
updated_at = ?
WHERE group_member_id = ?
|]
(unread, unanswered, mentions, currentTs, groupMemberId)
(unread, unread, unanswered, unanswered, mentions, mentions, currentTs, groupMemberId)
m_ <- runExceptT $ getGroupMemberById db vr user groupMemberId
pure $ either (const m) id m_ -- Left shouldn't happen, but types require it