From 4b12ede79ec2f050d9c92ea145527fc749436326 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Sun, 22 Mar 2020 19:43:55 +0100 Subject: [PATCH] Fix duplicate Signed-off-by: Mario Danic --- app/build.gradle | 4 +-- .../talk/controllers/ChatController.kt | 32 +++++++++++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 31113dc34..420117aac 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,8 +39,8 @@ android { targetSdkVersion 28 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - versionCode 133 - versionName "8.0.6" + versionCode 134 + versionName "8.0.7" flavorDimensions "default" renderscriptTargetApi 19 diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index f1aa11cb6..792a202c6 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -194,6 +194,8 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter var lobbyTimerHandler: Handler? = null val roomJoined: Boolean = false + var pastPreconditionFailed = false + var futurePreconditionFailed = false init { setHasOptionsMenu(true) @@ -471,8 +473,6 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter // we're starting if (TextUtils.isEmpty(roomToken)) { handleFromNotification() - } else { - getRoomInfo() } } } @@ -529,11 +529,25 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter lobbyView?.visibility = View.GONE messagesListView?.visibility = View.VISIBLE messageInput?.visibility = View.VISIBLE + if (isFirstMessagesProcessing && pastPreconditionFailed) { + pastPreconditionFailed = false + pullChatMessages(0) + } else if (futurePreconditionFailed) { + futurePreconditionFailed = false + pullChatMessages(1) + } } } else { lobbyView?.visibility = View.GONE messagesListView?.visibility = View.VISIBLE messageInput?.visibility = View.VISIBLE + if (isFirstMessagesProcessing && pastPreconditionFailed) { + pastPreconditionFailed = false + pullChatMessages(0) + } else if (futurePreconditionFailed) { + futurePreconditionFailed = false + pullChatMessages(1) + } } } @@ -913,7 +927,7 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter } if (currentConversation != null && currentConversation!!.shouldShowLobby(conversationUser)) { - return + //return } val fieldMap = HashMap() @@ -964,13 +978,15 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter override fun onNext(response: Response<*>) { if (response.code() == 304) { pullChatMessages(1) + } else if (response.code() == 412) { + futurePreconditionFailed = true + } else { processMessages(response, true, finalTimeout) } } override fun onError(e: Throwable) { - } override fun onComplete() { @@ -983,7 +999,6 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter ApiUtils.getUrlForChat(conversationUser?.baseUrl, roomToken), fieldMap) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) - ?.retry(3) { observable -> inConversation && !wasDetached } ?.takeWhile { observable -> inConversation && !wasDetached } ?.subscribe(object : Observer> { override fun onSubscribe(d: Disposable) { @@ -991,11 +1006,14 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter } override fun onNext(response: Response<*>) { - processMessages(response, false, 0) + if (response.code() == 412) { + pastPreconditionFailed = true + } else { + processMessages(response, false, 0) + } } override fun onError(e: Throwable) { - } override fun onComplete() {