mirror of
https://github.com/nextcloud/talk-android
synced 2025-02-08 15:42:58 +00:00
do not try to pull chat messages when offline or paused
Otherwise, it resulted in a lot of flickering because _lastCommonReadFlow was emitted every 500ms. And anyway if we know we are offline or paused then it doesn't make sense to execute the sync method. chain which caused the flickering was: updateUiForLastCommonRead (_lastCommonReadFlow) -> updateReadStatusOfAllMessages - notifyDataSetChanged -> onBindViewHolder -> IncomingLinkPreviewMessageViewHolder Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
e7d596f402
commit
9a14764321
@ -199,29 +199,31 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
val networkParams = Bundle()
|
||||
|
||||
while (true) {
|
||||
if (!monitor.isOnline.first() || itIsPaused) Thread.sleep(HALF_SECOND)
|
||||
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)
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
val resultsFromSync = sync(networkParams)
|
||||
if (!resultsFromSync.isNullOrEmpty()) {
|
||||
val chatMessages = resultsFromSync.map(ChatMessageEntity::asModel)
|
||||
val pair = Pair(true, chatMessages)
|
||||
_messageFlow.emit(pair)
|
||||
updateUiForLastCommonRead()
|
||||
|
||||
val newestMessage = chatDao.getNewestMessageId(internalConversationId).toInt()
|
||||
|
||||
// update field map vars for next cycle
|
||||
fieldMap = getFieldMap(
|
||||
lookIntoFuture = true,
|
||||
includeLastKnown = false,
|
||||
setReadMarker = true,
|
||||
lastKnown = newestMessage
|
||||
)
|
||||
}
|
||||
|
||||
updateUiForLastCommonRead()
|
||||
|
||||
val newestMessage = chatDao.getNewestMessageId(internalConversationId).toInt()
|
||||
|
||||
// update field map vars for next cycle
|
||||
fieldMap = getFieldMap(
|
||||
lookIntoFuture = true,
|
||||
includeLastKnown = false,
|
||||
setReadMarker = true,
|
||||
lastKnown = newestMessage
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user