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 <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-01-22 13:54:31 +01:00
parent b6e341bbf1
commit 1f105d44d3
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -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")
}