From 62a2f61751fecf06c51bc0f1d89ced3d528ca8eb Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:41:34 +0000 Subject: [PATCH] android: Fix non-unique chat item id in listState (#1723) * android: Fix non-unique chat item id in listState * Test * Revert "Test" This reverts commit 6625bce138d562cbfa8b9eb79af02e399c67cc20. --- .../java/chat/simplex/app/model/ChatModel.kt | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) 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 2e689f24cd..c8a58a0aca 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 @@ -17,6 +17,7 @@ import chat.simplex.app.views.helpers.* import chat.simplex.app.views.onboarding.OnboardingStage import chat.simplex.app.views.usersettings.NotificationPreviewMode import chat.simplex.app.views.usersettings.NotificationsMode +import kotlinx.coroutines.* import kotlinx.datetime.* import kotlinx.serialization.* import kotlinx.serialization.descriptors.* @@ -180,10 +181,12 @@ class ChatModel(val controller: ChatController) { } // add to current chat if (chatId.value == cInfo.id) { - if (chatItems.lastOrNull()?.id == ChatItem.TEMP_LIVE_CHAT_ITEM_ID) { - chatItems.add(kotlin.math.max(0, chatItems.lastIndex), cItem) - } else { - chatItems.add(cItem) + runBlocking(Dispatchers.Main) { + if (chatItems.lastOrNull()?.id == ChatItem.TEMP_LIVE_CHAT_ITEM_ID) { + chatItems.add(kotlin.math.max(0, chatItems.lastIndex), cItem) + } else { + chatItems.add(cItem) + } } } } @@ -215,7 +218,9 @@ class ChatModel(val controller: ChatController) { chatItems[itemIndex] = cItem return false } else { - chatItems.add(cItem) + runBlocking(Dispatchers.Main) { + chatItems.add(cItem) + } return true } } else { @@ -261,7 +266,9 @@ class ChatModel(val controller: ChatController) { fun addLiveDummy(chatInfo: ChatInfo): ChatItem { val cItem = ChatItem.liveDummy(chatInfo is ChatInfo.Direct) - chatItems.add(cItem) + runBlocking(Dispatchers.Main) { + chatItems.add(cItem) + } return cItem }