From a8be41c55e5fcee6b34c925c74410a88a08a745e Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 5 Apr 2026 14:55:32 +0300 Subject: [PATCH] fix: reduce heavy realtime refreshes fix: reconcile deleted and read messages with targeted chat updates --- .../realtime/usecase/HandleRealtimeEventsUseCase.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/ru/daemonlord/messenger/domain/realtime/usecase/HandleRealtimeEventsUseCase.kt b/android/app/src/main/java/ru/daemonlord/messenger/domain/realtime/usecase/HandleRealtimeEventsUseCase.kt index 580f9a2..03eab5a 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/domain/realtime/usecase/HandleRealtimeEventsUseCase.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/domain/realtime/usecase/HandleRealtimeEventsUseCase.kt @@ -161,14 +161,15 @@ class HandleRealtimeEventsUseCase @Inject constructor( is RealtimeEvent.MessageDeleted -> { event.messageId?.let { messageDao.deleteMessage(it) } - chatRepository.refreshChats(archived = false) - chatRepository.refreshChats(archived = true) + if (activeChatTracker.activeChatId.value == event.chatId) { + messageRepository.syncRecentMessages(chatId = event.chatId) + chatDao.markChatRead(chatId = event.chatId) + } + chatRepository.refreshChat(chatId = event.chatId) } is RealtimeEvent.ChatUpdated -> { chatRepository.refreshChat(chatId = event.chatId) - chatRepository.refreshChats(archived = false) - chatRepository.refreshChats(archived = true) } is RealtimeEvent.ChatDeleted -> { @@ -203,6 +204,9 @@ class HandleRealtimeEventsUseCase @Inject constructor( messageId = event.messageId, status = "read", ) + if (activeChatTracker.activeChatId.value == event.chatId) { + chatDao.markChatRead(chatId = event.chatId) + } chatRepository.refreshChat(chatId = event.chatId) }