android: Update chats when enter the app from background (#1196)

* android: Update chats when enter the app from background

* Nullify current chat id if the chat was deleted in background
This commit is contained in:
Stanislav Dmitrenko
2022-10-11 13:35:47 +03:00
committed by GitHub
parent ee5997cdf7
commit 05122fc476
3 changed files with 15 additions and 1 deletions
@@ -94,6 +94,14 @@ class SimplexApp: Application(), LifecycleEventObserver {
Log.d(TAG, "onStateChanged: $event")
withApi {
when (event) {
Lifecycle.Event.ON_START -> {
if (chatModel.chatRunning.value == true) {
kotlin.runCatching {
val chats = chatController.apiGetChats()
chatModel.updateChats(chats)
}.onFailure { Log.e(TAG, it.stackTraceToString()) }
}
}
Lifecycle.Event.ON_RESUME -> {
if (chatModel.onboardingStage.value == OnboardingStage.OnboardingComplete) {
chatController.showBackgroundServiceNoticeIfNeeded()
@@ -114,6 +114,12 @@ class ChatModel(val controller: ChatController) {
}
chats.clear()
chats.addAll(mergedChats)
val cId = chatId.value
// If chat is null, it was deleted in background after apiGetChats call
if (cId != null && getChat(cId) == null) {
chatId.value = null
}
}
fun updateNetworkStatus(id: ChatId, status: Chat.NetworkStatus) {
@@ -377,7 +377,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
suspend fun apiGetChats(): List<Chat> {
val r = sendCmd(CC.ApiGetChats())
if (r is CR.ApiChats ) return r.chats
throw Error("failed getting the list of chats: ${r.responseType} ${r.details}")
throw Exception("failed getting the list of chats: ${r.responseType} ${r.details}")
}
suspend fun apiGetChat(type: ChatType, id: Long, pagination: ChatPagination = ChatPagination.Last(ChatPagination.INITIAL_COUNT), search: String = ""): Chat? {