From 1f105d44d36e8bf30631703eef67dbd7e4f2fde6 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 22 Jan 2025 13:54:31 +0100 Subject: [PATCH] check if scope is active during long polling Because long polling may have to be informed that the scopep was cancelled, the isActive checks are added so it can't happen that messages are added when they shouldn't. I could not reproduce the scenario, anyway the checks should make sense in my opinion. Signed-off-by: Marcel Hibbe --- .../data/network/OfflineFirstChatRepository.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt index 2953fab83..c8577e418 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt @@ -308,7 +308,7 @@ class OfflineFirstChatRepository @Inject constructor( var showUnreadMessagesMarker = true - while (true) { + while (isActive) { if (!networkMonitor.isOnline.value || itIsPaused) { Thread.sleep(HALF_SECOND) } else { @@ -324,11 +324,15 @@ class OfflineFirstChatRepository @Inject constructor( val weHaveMessagesFromOurself = chatMessages.any { it.actorId == currentUser.userId } showUnreadMessagesMarker = showUnreadMessagesMarker && !weHaveMessagesFromOurself - handleNewAndTempMessages( - receivedChatMessages = chatMessages, - lookIntoFuture = true, - showUnreadMessagesMarker = showUnreadMessagesMarker - ) + if (isActive) { + handleNewAndTempMessages( + receivedChatMessages = chatMessages, + lookIntoFuture = true, + showUnreadMessagesMarker = showUnreadMessagesMarker + ) + } else { + Log.d(TAG, "scope was already canceled") + } } else { Log.d(TAG, "resultsFromSync are null or empty") }