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 c8a58a0aca..f261c1832d 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 @@ -157,7 +157,7 @@ class ChatModel(val controller: ChatController) { } } - fun addChatItem(cInfo: ChatInfo, cItem: ChatItem) { + suspend fun addChatItem(cInfo: ChatInfo, cItem: ChatItem) { // update previews val i = getChatIndex(cInfo.id) val chat: Chat @@ -181,7 +181,7 @@ class ChatModel(val controller: ChatController) { } // add to current chat if (chatId.value == cInfo.id) { - runBlocking(Dispatchers.Main) { + withContext(Dispatchers.Main) { if (chatItems.lastOrNull()?.id == ChatItem.TEMP_LIVE_CHAT_ITEM_ID) { chatItems.add(kotlin.math.max(0, chatItems.lastIndex), cItem) } else { @@ -191,7 +191,7 @@ class ChatModel(val controller: ChatController) { } } - fun upsertChatItem(cInfo: ChatInfo, cItem: ChatItem): Boolean { + suspend fun upsertChatItem(cInfo: ChatInfo, cItem: ChatItem): Boolean { // update previews val i = getChatIndex(cInfo.id) val chat: Chat @@ -218,7 +218,7 @@ class ChatModel(val controller: ChatController) { chatItems[itemIndex] = cItem return false } else { - runBlocking(Dispatchers.Main) { + withContext(Dispatchers.Main) { chatItems.add(cItem) } return true @@ -264,9 +264,9 @@ class ChatModel(val controller: ChatController) { } } - fun addLiveDummy(chatInfo: ChatInfo): ChatItem { + suspend fun addLiveDummy(chatInfo: ChatInfo): ChatItem { val cItem = ChatItem.liveDummy(chatInfo is ChatInfo.Direct) - runBlocking(Dispatchers.Main) { + withContext(Dispatchers.Main) { chatItems.add(cItem) } return cItem 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 d9881007df..661703d5a4 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 @@ -1023,7 +1023,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a AlertManager.shared.showAlertMsg(title, errMsg) } - fun processReceivedMsg(r: CR) { + suspend fun processReceivedMsg(r: CR) { lastMsgReceivedTimestamp = System.currentTimeMillis() chatModel.terminalItems.add(TerminalItem.resp(r)) when (r) { @@ -1257,7 +1257,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a } } - private fun chatItemSimpleUpdate(aChatItem: AChatItem) { + private suspend fun chatItemSimpleUpdate(aChatItem: AChatItem) { val cInfo = aChatItem.chatInfo val cItem = aChatItem.chatItem if (chatModel.upsertChatItem(cInfo, cItem)) { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/TerminalView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/TerminalView.kt index feed70ce75..b827e92b89 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/TerminalView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/TerminalView.kt @@ -174,7 +174,7 @@ fun TerminalLog(terminalItems: List) { DisposableEffect(Unit) { onDispose { lazyListState = listState.firstVisibleItemIndex to listState.firstVisibleItemScrollOffset } } - val reversedTerminalItems by remember { derivedStateOf { terminalItems.reversed() } } + val reversedTerminalItems by remember { derivedStateOf { terminalItems.reversed().toList() } } LazyColumn(state = listState, reverseLayout = true) { items(reversedTerminalItems) { item -> Text( diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt index 7d15b5ff67..22a5a14e55 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt @@ -529,7 +529,7 @@ fun BoxWithConstraintsScope.ChatItemsList( } Spacer(Modifier.size(8.dp)) - val reversedChatItems by remember { derivedStateOf { chatItems.reversed() } } + val reversedChatItems by remember { derivedStateOf { chatItems.reversed().toList() } } val maxHeightRounded = with(LocalDensity.current) { maxHeight.roundToPx() } val scrollToItem: (Long) -> Unit = { itemId: Long -> val index = reversedChatItems.indexOfFirst { it.id == itemId }