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 3e83ef76f..39740d05f 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,7 +49,7 @@ object ChatModel { val chatDbStatus = mutableStateOf(null) val chats = mutableStateListOf() // map of connections network statuses, key is agent connection id - val networkStatuses = mutableStateMapOf() + val networkStatuses = mutableStateOf>(mapOf()) // current chat val chatId = mutableStateOf(null) @@ -477,11 +477,13 @@ object ChatModel { } fun setContactNetworkStatus(contact: Contact, status: NetworkStatus) { - networkStatuses[contact.activeConn.agentConnId] = status + val statuses = networkStatuses.value.toMutableMap() + statuses[contact.activeConn.agentConnId] = status + networkStatuses.value = statuses } fun contactNetworkStatus(contact: Contact): NetworkStatus = - networkStatuses[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown() + networkStatuses.value[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown() fun addTerminalItem(item: TerminalItem) { if (terminalItems.value.size >= 500) { 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 ad2dfe47f..96cf5e3c9 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,9 +1678,11 @@ object ChatController { } private fun updateContactsStatus(contactRefs: List, status: NetworkStatus) { + val statuses = chatModel.networkStatuses.value.toMutableMap() for (c in contactRefs) { - chatModel.networkStatuses[c.agentConnId] = status + statuses[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/chat/ChatInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt index 85ab5c2ea..1d9f86edd 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.toMap()) { + val contactNetworkStatus = remember(chatModel.networkStatuses.value) { mutableStateOf(chatModel.contactNetworkStatus(contact)) } val sendReceipts = remember { mutableStateOf(SendReceipts.fromBool(contact.chatSettings.sendRcpts, currentUser.sendRcptsContacts)) }