mirror of
https://github.com/nextcloud/talk-android.git
synced 2024-11-26 23:25:20 +03:00
Prevent overlapping pullChatMessages calls
Sometimes pullChatMessages may be called before response to a previous call is received. In such cases just ignore the second call. Message processing will continue when response to the earlier call is received. Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
This commit is contained in:
parent
b2aef87b24
commit
a7bd6393df
1 changed files with 17 additions and 2 deletions
|
@ -233,6 +233,7 @@ class ChatController(args: Bundle) :
|
|||
var adapter: TalkMessagesListAdapter<ChatMessage>? = null
|
||||
var mentionAutocomplete: Autocomplete<*>? = null
|
||||
var layoutManager: LinearLayoutManager? = null
|
||||
var pullChatMessagesPending = false
|
||||
var lookingIntoFuture = false
|
||||
var newMessagesCount = 0
|
||||
var startCallFromNotification: Boolean? = null
|
||||
|
@ -1902,6 +1903,16 @@ class ChatController(args: Bundle) :
|
|||
return
|
||||
}
|
||||
|
||||
if (pullChatMessagesPending) {
|
||||
// Sometimes pullChatMessages may be called before response to a previous call is received.
|
||||
// In such cases just ignore the second call. Message processing will continue when response to the
|
||||
// earlier call is received.
|
||||
// More details: https://github.com/nextcloud/talk-android/pull/1766
|
||||
Log.d(TAG, "pullChatMessages - pullChatMessagesPending is true, exiting")
|
||||
return
|
||||
}
|
||||
pullChatMessagesPending = true
|
||||
|
||||
if (currentConversation != null && currentConversation!!.shouldShowLobby(conversationUser)) {
|
||||
// return
|
||||
}
|
||||
|
@ -1966,6 +1977,7 @@ class ChatController(args: Bundle) :
|
|||
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||
override fun onNext(response: Response<*>) {
|
||||
Log.d(TAG, "pullChatMessages - pullChatMessages[lookIntoFuture > 0] - got response")
|
||||
pullChatMessagesPending = false
|
||||
try {
|
||||
if (response.code() == 304) {
|
||||
Log.d(TAG, "pullChatMessages - quasi recursive call to pullChatMessages")
|
||||
|
@ -1984,10 +1996,11 @@ class ChatController(args: Bundle) :
|
|||
|
||||
override fun onError(e: Throwable) {
|
||||
Log.e(TAG, "pullChatMessages - pullChatMessages[lookIntoFuture > 0] - ERROR", e)
|
||||
pullChatMessagesPending = false
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
// unused atm
|
||||
pullChatMessagesPending = false
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
@ -2006,6 +2019,7 @@ class ChatController(args: Bundle) :
|
|||
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||
override fun onNext(response: Response<*>) {
|
||||
Log.d(TAG, "pullChatMessages - pullChatMessages[lookIntoFuture <= 0] - got response")
|
||||
pullChatMessagesPending = false
|
||||
try {
|
||||
if (response.code() == 412) {
|
||||
pastPreconditionFailed = true
|
||||
|
@ -2021,10 +2035,11 @@ class ChatController(args: Bundle) :
|
|||
|
||||
override fun onError(e: Throwable) {
|
||||
Log.e(TAG, "pullChatMessages - pullChatMessages[lookIntoFuture <= 0] - ERROR", e)
|
||||
pullChatMessagesPending = false
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
// unused atm
|
||||
pullChatMessagesPending = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue