core: only include mentions in unread count for groups with mentions-only notifications (#5601)

* core: only include mentions in unread count for groups with mentions-only notifications

* remove whitespace

* update nft servers

* update query plans
This commit is contained in:
Evgeny 2025-02-02 23:30:52 +00:00 committed by GitHub
parent 442282be93
commit 43e374cf20
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 8 deletions

View file

@ -131,9 +131,9 @@ import Simplex.Messaging.Agent.Store.SQLite.DB (SlowQueryStats (..))
_defaultNtfServers :: [NtfServer] _defaultNtfServers :: [NtfServer]
_defaultNtfServers = _defaultNtfServers =
[ "ntf://FB-Uop7RTaZZEG0ZLD2CIaTjsPh-Fw0zFAnb7QyA8Ks=@ntf2.simplex.im,5ex3mupcazy3zlky64ab27phjhijpemsiby33qzq3pliejipbtx5xgad.onion" [ -- "ntf://FB-Uop7RTaZZEG0ZLD2CIaTjsPh-Fw0zFAnb7QyA8Ks=@ntf2.simplex.im,5ex3mupcazy3zlky64ab27phjhijpemsiby33qzq3pliejipbtx5xgad.onion"
-- "ntf://KmpZNNXiVZJx_G2T7jRUmDFxWXM3OAnunz3uLT0tqAA=@ntf3.simplex.im,pxculznuryunjdvtvh6s6szmanyadumpbmvevgdpe4wk5c65unyt4yid.onion", "ntf://KmpZNNXiVZJx_G2T7jRUmDFxWXM3OAnunz3uLT0tqAA=@ntf3.simplex.im,pxculznuryunjdvtvh6s6szmanyadumpbmvevgdpe4wk5c65unyt4yid.onion",
-- "ntf://CJ5o7X6fCxj2FFYRU2KuCo70y4jSqz7td2HYhLnXWbU=@ntf4.simplex.im,wtvuhdj26jwprmomnyfu5wfuq2hjkzfcc72u44vi6gdhrwxldt6xauad.onion" "ntf://CJ5o7X6fCxj2FFYRU2KuCo70y4jSqz7td2HYhLnXWbU=@ntf4.simplex.im,wtvuhdj26jwprmomnyfu5wfuq2hjkzfcc72u44vi6gdhrwxldt6xauad.onion"
] ]
maxImageSize :: Integer maxImageSize :: Integer

View file

@ -643,11 +643,11 @@ deleteGroupChatItems db User {userId} GroupInfo {groupId} =
deleteGroupMembers :: DB.Connection -> User -> GroupInfo -> IO () deleteGroupMembers :: DB.Connection -> User -> GroupInfo -> IO ()
deleteGroupMembers db User {userId} GroupInfo {groupId} = do deleteGroupMembers db User {userId} GroupInfo {groupId} = do
DB.execute_ db "DROP TABLE IF EXISTS temp_delete_members" DB.execute_ db "DROP TABLE IF EXISTS temp_delete_members"
#if defined(dbPostgres) #if defined(dbPostgres)
DB.execute_ db "CREATE TABLE temp_delete_members (contact_profile_id BIGINT, member_profile_id BIGINT, local_display_name TEXT)" DB.execute_ db "CREATE TABLE temp_delete_members (contact_profile_id BIGINT, member_profile_id BIGINT, local_display_name TEXT)"
#else #else
DB.execute_ db "CREATE TABLE temp_delete_members (contact_profile_id INTEGER, member_profile_id INTEGER, local_display_name TEXT)" DB.execute_ db "CREATE TABLE temp_delete_members (contact_profile_id INTEGER, member_profile_id INTEGER, local_display_name TEXT)"
#endif #endif
DB.execute DB.execute
db db
[sql| [sql|

View file

@ -174,7 +174,8 @@ getUsersInfo db = getUsers db >>= mapM getUserInfo
SELECT COUNT(1) SELECT COUNT(1)
FROM chat_items i FROM chat_items i
JOIN groups g USING (group_id) JOIN groups g USING (group_id)
WHERE i.user_id = ? AND i.item_status = ? AND (g.enable_ntfs = 1 OR g.enable_ntfs IS NULL) WHERE i.user_id = ? AND i.item_status = ?
AND (g.enable_ntfs = 1 OR g.enable_ntfs IS NULL OR (g.enable_ntfs = 2 AND i.user_mention = 1))
|] |]
(userId, CISRcvNew) (userId, CISRcvNew)
pure UserInfo {user, unreadCount = fromMaybe 0 ctCount + fromMaybe 0 gCount} pure UserInfo {user, unreadCount = fromMaybe 0 ctCount + fromMaybe 0 gCount}

View file

@ -154,7 +154,8 @@ Query:
SELECT COUNT(1) SELECT COUNT(1)
FROM chat_items i FROM chat_items i
JOIN groups g USING (group_id) JOIN groups g USING (group_id)
WHERE i.user_id = ? AND i.item_status = ? AND (g.enable_ntfs = 1 OR g.enable_ntfs IS NULL) WHERE i.user_id = ? AND i.item_status = ?
AND (g.enable_ntfs = 1 OR g.enable_ntfs IS NULL OR (g.enable_ntfs = 2 AND i.user_mention = 1))
Plan: Plan:
SEARCH i USING COVERING INDEX idx_chat_items_groups_user_mention (user_id=?) SEARCH i USING COVERING INDEX idx_chat_items_groups_user_mention (user_id=?)