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 1d2f301091..0af27cc120 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 @@ -102,9 +102,16 @@ class SimplexApp: Application(), LifecycleEventObserver { if (chatModel.chatRunning.value == true) { kotlin.runCatching { val currentUserId = chatModel.currentUser.value?.userId - val chats = chatController.apiGetChats() + val chats = ArrayList(chatController.apiGetChats()) /** Active user can be changed in background while [ChatController.apiGetChats] is executing */ if (chatModel.currentUser.value?.userId == currentUserId) { + val currentChatId = chatModel.chatId.value + val oldStats = if (currentChatId != null) chatModel.getChat(currentChatId)?.chatStats else null + if (oldStats != null) { + val indexOfCurrentChat = chats.indexOfFirst { it.id == currentChatId } + /** Pass old chatStats because unreadCounter can be changed already while [ChatController.apiGetChats] is executing */ + if (indexOfCurrentChat >= 0) chats[indexOfCurrentChat] = chats[indexOfCurrentChat].copy(chatStats = oldStats) + } chatModel.updateChats(chats) } }.onFailure { Log.e(TAG, it.stackTraceToString()) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/NtfManager.kt b/apps/android/app/src/main/java/chat/simplex/app/model/NtfManager.kt index e3076b900b..b6c3c11653 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/NtfManager.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/NtfManager.kt @@ -152,7 +152,7 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference .setGroup(MessageGroup) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN) .setGroupSummary(true) - .setContentIntent(chatPendingIntent(ShowChatsAction, user.userId)) + .setContentIntent(chatPendingIntent(ShowChatsAction, null)) .build() with(NotificationManagerCompat.from(context)) { @@ -246,7 +246,7 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference } } - private fun chatPendingIntent(intentAction: String, userId: Long, chatId: String? = null, broadcast: Boolean = false): PendingIntent { + private fun chatPendingIntent(intentAction: String, userId: Long?, chatId: String? = null, broadcast: Boolean = false): PendingIntent { Log.d(TAG, "chatPendingIntent for $intentAction") val uniqueInt = (System.currentTimeMillis() and 0xfffffff).toInt() var intent = Intent(context, if (!broadcast) MainActivity::class.java else NtfActionReceiver::class.java)