docs: chat list: count only unread main-scope messages for re-added chats

This commit is contained in:
Narasimha-sc committed 2026-10-19 16:19:05 +00:00
1 parent 1e0f662ab5
commit 4125da7c60
4 files changed
+5 -4

No files matched your search

+1 -1
View File
@@ -41,7 +41,7 @@ Managed by `ChatTagsModel` and `TagListView`:
| Filter | PresetTag | Description |
|---|---|---|
| All | (none) | No filter, shows all chats |
| Unread | `.unread` | Chats with unread messages. Only the most recently active 5000 chats are loaded ([GAP] chat list is silently limited to 5000 chats), so a chat outside that set appears when it receives a message, counting that message as unread until the list is reloaded; muted chats and non-mentions in mentions-only groups stay out of this filter as always |
| Unread | `.unread` | Chats with unread messages. Only the most recently active 5000 chats are loaded ([GAP] chat list is silently limited to 5000 chats), so a chat outside that set appears when it receives a message; an unread message in its main scope is counted as unread until the list is reloaded; muted chats and non-mentions in mentions-only groups stay out of this filter as always |
| Favorites | `.favorites` | User-favorited chats |
| Groups | `.groups` | Group conversations only |
| Contacts | `.contacts` | Direct contacts only |
+1 -1
View File
@@ -100,7 +100,7 @@ Renders a single row in the chat list. Shows:
| Chat name | `chatInfo.displayName` | Contact name, group name, or connection label |
| Last message | `chat.chatItems.last` | Preview text of most recent message |
| Timestamp | `chat.chatItems.last?.timestampText` | Relative time of last message |
| Unread badge | `chat.chatStats.unreadCount` | Circular badge with unread count. For a chat created from a received event this is that one item until the list is reloaded, since `/_get chats` loads at most 5000 chats ([GAP] chat list is silently limited to 5000 chats) |
| Unread badge | `chat.chatStats.unreadCount` | Circular badge with unread count. For a chat created from a received unread message in its main scope this is that one item (applied by `unreadCollector` about a second later), adjusted only by the app's own deltas until the list is reloaded, since `/_get chats` loads at most 5000 chats ([GAP] chat list is silently limited to 5000 chats) |
| Mute icon | `chatInfo.chatSettings?.enableNtfs` | Bell-slash icon if notifications muted |
| Pin icon | -- | Pin indicator for pinned chats |
| Incognito icon | Contact.contactConnIncognito | Incognito mode indicator |
@@ -73,7 +73,7 @@ Display logic:
- User tags show with emoji or label icon; long-press opens `TagsDropdownMenu` (edit, delete, change order)
- "+" button at end opens `TagListEditor` for creating new tags
- Only the most recently active 5000 chats are loaded ([GAP-12]), so a chat outside that set is absent
from the list until an event for it arrives, such as a message, or the user opens it from elsewhere in the app. A chat brought back by a received message is added counting that message as unread,
from the list until an event for it arrives, such as a message, or the user opens it from elsewhere in the app. A chat brought back by a received unread message in its main scope is added counting that message as unread,
so it carries an unread badge, and appears under the Unread filter on the same terms as any other chat
-- a muted chat does not, and a mentions-only group only for a mention. Its full count is shown once
the list is reloaded
+2 -1
View File
@@ -146,7 +146,8 @@ The `filteredChats` function (line ~1474) applies filters in this order:
- `UserTag`: Matches chats whose `chatTags` contain the tag ID.
- `Unread`: Matches chats whose `unreadTag` holds: `unreadChat`, or `unreadCount > 0` with notifications on, or `unreadMentions > 0` when set to mentions only. These come from the
in-memory list only, which holds at most 5000 chats ([GAP-12]); a chat created from a received
event is counted as having that one item unread until the chat is opened or the list is reloaded.
unread message in its main scope is counted as having that one item unread until it is loaded with
`ChatPagination.Initial` (opened normally) or the list is reloaded.
### Search Bar