core: exlude muted chats from user unread count (#1810)

This commit is contained in:
JRoberts
2023-01-20 20:48:24 +04:00
committed by GitHub
parent 7dd4dc3b40
commit e72d4638d2

View File

@@ -461,13 +461,29 @@ getUsersInfo db = getUsers db >>= mapM getUserInfo
where
getUserInfo :: User -> IO UserInfo
getUserInfo user@User {userId} = do
count_ <-
ctCount <-
maybeFirstRow fromOnly $
DB.query
db
"SELECT COUNT(1) FROM chat_items WHERE user_id = ? AND item_status = ? GROUP BY user_id"
[sql|
SELECT COUNT(1)
FROM chat_items i
JOIN contacts ct USING (contact_id)
WHERE i.user_id = ? AND i.item_status = ? AND (ct.enable_ntfs = 1 OR ct.enable_ntfs IS NULL)
|]
(userId, CISRcvNew)
pure UserInfo {user, unreadCount = fromMaybe 0 count_}
gCount <-
maybeFirstRow fromOnly $
DB.query
db
[sql|
SELECT COUNT(1)
FROM chat_items i
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)
|]
(userId, CISRcvNew)
pure UserInfo {user, unreadCount = fromMaybe 0 ctCount + fromMaybe 0 gCount}
getUsers :: DB.Connection -> IO [User]
getUsers db =