diff --git a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt index 369addf822..2bf139c356 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt @@ -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() diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt index 8407896bda..c95c152b27 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt @@ -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) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index e41b7e4a43..4557cf8bc1 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -377,7 +377,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a suspend fun apiGetChats(): List { 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? {