Fix duplicate

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2020-03-22 19:43:55 +01:00
parent 84cb7cc45a
commit 4b12ede79e
No known key found for this signature in database
GPG Key ID: CDE0BBD2738C4CC0
2 changed files with 27 additions and 9 deletions

View File

@ -39,8 +39,8 @@ android {
targetSdkVersion 28 targetSdkVersion 28
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
versionCode 133 versionCode 134
versionName "8.0.6" versionName "8.0.7"
flavorDimensions "default" flavorDimensions "default"
renderscriptTargetApi 19 renderscriptTargetApi 19

View File

@ -194,6 +194,8 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
var lobbyTimerHandler: Handler? = null var lobbyTimerHandler: Handler? = null
val roomJoined: Boolean = false val roomJoined: Boolean = false
var pastPreconditionFailed = false
var futurePreconditionFailed = false
init { init {
setHasOptionsMenu(true) setHasOptionsMenu(true)
@ -471,8 +473,6 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
// we're starting // we're starting
if (TextUtils.isEmpty(roomToken)) { if (TextUtils.isEmpty(roomToken)) {
handleFromNotification() handleFromNotification()
} else {
getRoomInfo()
} }
} }
} }
@ -529,11 +529,25 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
lobbyView?.visibility = View.GONE lobbyView?.visibility = View.GONE
messagesListView?.visibility = View.VISIBLE messagesListView?.visibility = View.VISIBLE
messageInput?.visibility = View.VISIBLE messageInput?.visibility = View.VISIBLE
if (isFirstMessagesProcessing && pastPreconditionFailed) {
pastPreconditionFailed = false
pullChatMessages(0)
} else if (futurePreconditionFailed) {
futurePreconditionFailed = false
pullChatMessages(1)
}
} }
} else { } else {
lobbyView?.visibility = View.GONE lobbyView?.visibility = View.GONE
messagesListView?.visibility = View.VISIBLE messagesListView?.visibility = View.VISIBLE
messageInput?.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)) { if (currentConversation != null && currentConversation!!.shouldShowLobby(conversationUser)) {
return //return
} }
val fieldMap = HashMap<String, Int>() val fieldMap = HashMap<String, Int>()
@ -964,13 +978,15 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
override fun onNext(response: Response<*>) { override fun onNext(response: Response<*>) {
if (response.code() == 304) { if (response.code() == 304) {
pullChatMessages(1) pullChatMessages(1)
} else if (response.code() == 412) {
futurePreconditionFailed = true
} else { } else {
processMessages(response, true, finalTimeout) processMessages(response, true, finalTimeout)
} }
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
} }
override fun onComplete() { override fun onComplete() {
@ -983,7 +999,6 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
ApiUtils.getUrlForChat(conversationUser?.baseUrl, roomToken), fieldMap) ApiUtils.getUrlForChat(conversationUser?.baseUrl, roomToken), fieldMap)
?.subscribeOn(Schedulers.io()) ?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread()) ?.observeOn(AndroidSchedulers.mainThread())
?.retry(3) { observable -> inConversation && !wasDetached }
?.takeWhile { observable -> inConversation && !wasDetached } ?.takeWhile { observable -> inConversation && !wasDetached }
?.subscribe(object : Observer<Response<*>> { ?.subscribe(object : Observer<Response<*>> {
override fun onSubscribe(d: Disposable) { override fun onSubscribe(d: Disposable) {
@ -991,11 +1006,14 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
} }
override fun onNext(response: Response<*>) { 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 onError(e: Throwable) {
} }
override fun onComplete() { override fun onComplete() {