fix: mark incoming messages as read when opening chat and load all history
Fixes two critical bugs: 1. Unread badge not clearing when opening chat - incoming messages weren't marked as viewed 2. Only last 2-3 messages loaded instead of full history due to incorrect break condition Changes: - Add incoming message IDs to pending_view_messages queue on chat open - Remove premature break in get_chat_history() that stopped after 2 messages - Add FakeTdClient.pending_view_messages field for testing - Implement process_pending_view_messages() in FakeTdClient Tests added: - test_incoming_message_shows_unread_badge: verify "(1)" appears for unread - test_opening_chat_clears_unread_badge: verify badge clears after opening - test_opening_chat_loads_many_messages: verify all 50 messages load, not just last few All 28 chat_list tests pass.
This commit is contained in:
@@ -167,10 +167,9 @@ impl MessageManager {
|
||||
}
|
||||
}
|
||||
|
||||
// Если получили достаточно сообщений, прекращаем попытки
|
||||
if all_messages.len() >= 2 || attempt == max_attempts {
|
||||
break;
|
||||
}
|
||||
// Если получили непустой результат, прекращаем попытки
|
||||
// (TDLib вернёт столько сообщений, сколько доступно, до limit)
|
||||
break;
|
||||
}
|
||||
|
||||
// Если сообщений мало, ждём перед следующей попыткой
|
||||
|
||||
Reference in New Issue
Block a user