desktop: fix freeze in some situations (#2820)
* desktop: fix freeze in some situations * old fashion * small change
This commit is contained in:
parent
f0d64a30e9
commit
6268f0a32b
@ -49,7 +49,7 @@ object ChatModel {
|
||||
val chatDbStatus = mutableStateOf<DBMigrationResult?>(null)
|
||||
val chats = mutableStateListOf<Chat>()
|
||||
// map of connections network statuses, key is agent connection id
|
||||
val networkStatuses = mutableStateMapOf<String, NetworkStatus>()
|
||||
val networkStatuses = mutableStateOf<Map<String, NetworkStatus>>(mapOf())
|
||||
|
||||
// current chat
|
||||
val chatId = mutableStateOf<String?>(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) {
|
||||
|
@ -1678,9 +1678,11 @@ object ChatController {
|
||||
}
|
||||
|
||||
private fun updateContactsStatus(contactRefs: List<ContactRef>, 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) {
|
||||
|
@ -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)) }
|
||||
|
Loading…
Reference in New Issue
Block a user