From 2f10633d1d51b98eefd3309290139b0716efa401 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 2 Aug 2023 19:20:15 +0300 Subject: [PATCH] multiplatform: update compose version (#2835) * multiplatform: update compose version * Revert "desktop: fix freeze in some situations (#2820)" This reverts commit 6268f0a32b1bb35aeeb2eba4c1d14c80d3a4ba8f. * Revert "desktop: prevent deadlock (#2785)" This reverts commit d77980e50e27af2bbabb76f933ae75c1ca92ceee. * restore debug commands in comments --------- Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../chat/simplex/common/model/ChatModel.kt | 17 +++++++---------- .../chat/simplex/common/model/SimpleXAPI.kt | 4 +--- .../chat/simplex/common/views/TerminalView.kt | 10 +++++----- .../simplex/common/views/chat/ChatInfoView.kt | 2 +- apps/multiplatform/gradle.properties | 2 +- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt index 39740d05f..7a036fffd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt @@ -49,14 +49,14 @@ object ChatModel { val chatDbStatus = mutableStateOf(null) val chats = mutableStateListOf() // map of connections network statuses, key is agent connection id - val networkStatuses = mutableStateOf>(mapOf()) + val networkStatuses = mutableStateMapOf() // current chat val chatId = mutableStateOf(null) val chatItems = mutableStateListOf() val groupMembers = mutableStateListOf() - val terminalItems = mutableStateOf(emptyList()) + val terminalItems = mutableStateListOf() val userAddress = mutableStateOf(null) // Allows to temporary save servers that are being edited on multiple screens val userSMPServersUnsaved = mutableStateOf<(List)?>(null) @@ -477,20 +477,17 @@ object ChatModel { } fun setContactNetworkStatus(contact: Contact, status: NetworkStatus) { - val statuses = networkStatuses.value.toMutableMap() - statuses[contact.activeConn.agentConnId] = status - networkStatuses.value = statuses + networkStatuses[contact.activeConn.agentConnId] = status } fun contactNetworkStatus(contact: Contact): NetworkStatus = - networkStatuses.value[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown() + networkStatuses[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown() fun addTerminalItem(item: TerminalItem) { - if (terminalItems.value.size >= 500) { - terminalItems.value = terminalItems.value.takeLast(499) + item - } else { - terminalItems.value += item + if (terminalItems.size >= 500) { + terminalItems.removeAt(0) } + terminalItems.add(item) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt index 16f8db0bc..53f7c66ea 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt @@ -1678,11 +1678,9 @@ object ChatController { } private fun updateContactsStatus(contactRefs: List, status: NetworkStatus) { - val statuses = chatModel.networkStatuses.value.toMutableMap() for (c in contactRefs) { - statuses[c.agentConnId] = status + chatModel.networkStatuses[c.agentConnId] = status } - chatModel.networkStatuses.value = statuses } private fun processContactSubError(contact: Contact, chatError: ChatError) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt index b9f60f9cf..faf97b485 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt @@ -34,7 +34,7 @@ fun TerminalView(chatModel: ChatModel, close: () -> Unit) { close() }) TerminalLayout( - chatModel.terminalItems, + remember { chatModel.terminalItems }, composeState, sendCommand = { sendCommand(chatModel, composeState) }, close @@ -62,7 +62,7 @@ private fun sendCommand(chatModel: ChatModel, composeState: MutableState>, + terminalItems: List, composeState: MutableState, sendCommand: () -> Unit, close: () -> Unit @@ -115,12 +115,12 @@ fun TerminalLayout( private var lazyListState = 0 to 0 @Composable -fun TerminalLog(terminalItems: MutableState>) { +fun TerminalLog(terminalItems: List) { val listState = rememberLazyListState(lazyListState.first, lazyListState.second) DisposableEffect(Unit) { onDispose { lazyListState = listState.firstVisibleItemIndex to listState.firstVisibleItemScrollOffset } } - val reversedTerminalItems by remember { derivedStateOf { terminalItems.value.reversed().toList() } } + val reversedTerminalItems by remember { derivedStateOf { terminalItems.reversed().toList() } } val clipboard = LocalClipboardManager.current LazyColumn(state = listState, reverseLayout = true) { items(reversedTerminalItems) { item -> @@ -152,7 +152,7 @@ fun TerminalLog(terminalItems: MutableState>) { fun PreviewTerminalLayout() { SimpleXTheme { TerminalLayout( - terminalItems = remember { mutableStateOf(TerminalItem.sampleData) }, + terminalItems = TerminalItem.sampleData, composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = false)) }, sendCommand = {}, close = {} diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt index 1d9f86edd..85ab5c2ea 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt @@ -55,7 +55,7 @@ fun ChatInfoView( val connStats = remember { mutableStateOf(connectionStats) } val developerTools = chatModel.controller.appPrefs.developerTools.get() if (chat != null && currentUser != null) { - val contactNetworkStatus = remember(chatModel.networkStatuses.value) { + val contactNetworkStatus = remember(chatModel.networkStatuses.toMap()) { mutableStateOf(chatModel.contactNetworkStatus(contact)) } val sendReceipts = remember { mutableStateOf(SendReceipts.fromBool(contact.chatSettings.sendRcpts, currentUser.sendRcptsContacts)) } diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index b8168f417..07e2de4ea 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -32,4 +32,4 @@ desktop.version_name=1.0.1 kotlin.version=1.8.20 gradle.plugin.version=7.4.2 -compose.version=1.4.0 +compose.version=1.4.3