Эх сурвалжийг харах

Merge pull request #4193 from nextcloud/bugfix/4168/doNotPullMessagesWhenOfflineOrPaused

do not try to pull chat messages when offline or paused
Marcel Hibbe 6 сар өмнө
parent
commit
9976767591

+ 22 - 20
app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt

@@ -199,29 +199,31 @@ class OfflineFirstChatRepository @Inject constructor(
             val networkParams = Bundle()
 
             while (true) {
-                if (!monitor.isOnline.first() || itIsPaused) Thread.sleep(HALF_SECOND)
-
-                // sync database with server (This is a long blocking call because long polling (lookIntoFuture) is set)
-                networkParams.putSerializable(BundleKeys.KEY_FIELD_MAP, fieldMap)
-
-                val resultsFromSync = sync(networkParams)
-                if (!resultsFromSync.isNullOrEmpty()) {
-                    val chatMessages = resultsFromSync.map(ChatMessageEntity::asModel)
-                    val pair = Pair(true, chatMessages)
-                    _messageFlow.emit(pair)
-                }
+                if (!monitor.isOnline.first() || itIsPaused) {
+                    Thread.sleep(HALF_SECOND)
+                } else {
+                    // sync database with server (This is a long blocking call because long polling (lookIntoFuture) is set)
+                    networkParams.putSerializable(BundleKeys.KEY_FIELD_MAP, fieldMap)
+
+                    val resultsFromSync = sync(networkParams)
+                    if (!resultsFromSync.isNullOrEmpty()) {
+                        val chatMessages = resultsFromSync.map(ChatMessageEntity::asModel)
+                        val pair = Pair(true, chatMessages)
+                        _messageFlow.emit(pair)
+                    }
 
-                updateUiForLastCommonRead()
+                    updateUiForLastCommonRead()
 
-                val newestMessage = chatDao.getNewestMessageId(internalConversationId).toInt()
+                    val newestMessage = chatDao.getNewestMessageId(internalConversationId).toInt()
 
-                // update field map vars for next cycle
-                fieldMap = getFieldMap(
-                    lookIntoFuture = true,
-                    includeLastKnown = false,
-                    setReadMarker = true,
-                    lastKnown = newestMessage
-                )
+                    // update field map vars for next cycle
+                    fieldMap = getFieldMap(
+                        lookIntoFuture = true,
+                        includeLastKnown = false,
+                        setReadMarker = true,
+                        lastKnown = newestMessage
+                    )
+                }
             }
         }