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 chatDbStatus = mutableStateOf<DBMigrationResult?>(null)
|
||||||
val chats = mutableStateListOf<Chat>()
|
val chats = mutableStateListOf<Chat>()
|
||||||
// map of connections network statuses, key is agent connection id
|
// map of connections network statuses, key is agent connection id
|
||||||
val networkStatuses = mutableStateMapOf<String, NetworkStatus>()
|
val networkStatuses = mutableStateOf<Map<String, NetworkStatus>>(mapOf())
|
||||||
|
|
||||||
// current chat
|
// current chat
|
||||||
val chatId = mutableStateOf<String?>(null)
|
val chatId = mutableStateOf<String?>(null)
|
||||||
@ -477,11 +477,13 @@ object ChatModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setContactNetworkStatus(contact: Contact, status: NetworkStatus) {
|
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 =
|
fun contactNetworkStatus(contact: Contact): NetworkStatus =
|
||||||
networkStatuses[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown()
|
networkStatuses.value[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown()
|
||||||
|
|
||||||
fun addTerminalItem(item: TerminalItem) {
|
fun addTerminalItem(item: TerminalItem) {
|
||||||
if (terminalItems.value.size >= 500) {
|
if (terminalItems.value.size >= 500) {
|
||||||
|
@ -1678,9 +1678,11 @@ object ChatController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateContactsStatus(contactRefs: List<ContactRef>, status: NetworkStatus) {
|
private fun updateContactsStatus(contactRefs: List<ContactRef>, status: NetworkStatus) {
|
||||||
|
val statuses = chatModel.networkStatuses.value.toMutableMap()
|
||||||
for (c in contactRefs) {
|
for (c in contactRefs) {
|
||||||
chatModel.networkStatuses[c.agentConnId] = status
|
statuses[c.agentConnId] = status
|
||||||
}
|
}
|
||||||
|
chatModel.networkStatuses.value = statuses
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processContactSubError(contact: Contact, chatError: ChatError) {
|
private fun processContactSubError(contact: Contact, chatError: ChatError) {
|
||||||
|
@ -55,7 +55,7 @@ fun ChatInfoView(
|
|||||||
val connStats = remember { mutableStateOf(connectionStats) }
|
val connStats = remember { mutableStateOf(connectionStats) }
|
||||||
val developerTools = chatModel.controller.appPrefs.developerTools.get()
|
val developerTools = chatModel.controller.appPrefs.developerTools.get()
|
||||||
if (chat != null && currentUser != null) {
|
if (chat != null && currentUser != null) {
|
||||||
val contactNetworkStatus = remember(chatModel.networkStatuses.toMap()) {
|
val contactNetworkStatus = remember(chatModel.networkStatuses.value) {
|
||||||
mutableStateOf(chatModel.contactNetworkStatus(contact))
|
mutableStateOf(chatModel.contactNetworkStatus(contact))
|
||||||
}
|
}
|
||||||
val sendReceipts = remember { mutableStateOf(SendReceipts.fromBool(contact.chatSettings.sendRcpts, currentUser.sendRcptsContacts)) }
|
val sendReceipts = remember { mutableStateOf(SendReceipts.fromBool(contact.chatSettings.sendRcpts, currentUser.sendRcptsContacts)) }
|
||||||
|
Loading…
Reference in New Issue
Block a user