multiplatform: update compose version (#2835)

* multiplatform: update compose version

* Revert "desktop: fix freeze in some situations (#2820)"

This reverts commit 6268f0a32b.

* Revert "desktop: prevent deadlock (#2785)"

This reverts commit d77980e50e.

* restore debug commands in comments

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
This commit is contained in:
Stanislav Dmitrenko 2023-08-02 19:20:15 +03:00 committed by GitHub
parent e34a8ef719
commit 2f10633d1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 20 deletions

View File

@ -49,14 +49,14 @@ 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 = mutableStateOf<Map<String, NetworkStatus>>(mapOf()) val networkStatuses = mutableStateMapOf<String, NetworkStatus>()
// current chat // current chat
val chatId = mutableStateOf<String?>(null) val chatId = mutableStateOf<String?>(null)
val chatItems = mutableStateListOf<ChatItem>() val chatItems = mutableStateListOf<ChatItem>()
val groupMembers = mutableStateListOf<GroupMember>() val groupMembers = mutableStateListOf<GroupMember>()
val terminalItems = mutableStateOf(emptyList<TerminalItem>()) val terminalItems = mutableStateListOf<TerminalItem>()
val userAddress = mutableStateOf<UserContactLinkRec?>(null) val userAddress = mutableStateOf<UserContactLinkRec?>(null)
// Allows to temporary save servers that are being edited on multiple screens // Allows to temporary save servers that are being edited on multiple screens
val userSMPServersUnsaved = mutableStateOf<(List<ServerCfg>)?>(null) val userSMPServersUnsaved = mutableStateOf<(List<ServerCfg>)?>(null)
@ -477,20 +477,17 @@ object ChatModel {
} }
fun setContactNetworkStatus(contact: Contact, status: NetworkStatus) { fun setContactNetworkStatus(contact: Contact, status: NetworkStatus) {
val statuses = networkStatuses.value.toMutableMap() networkStatuses[contact.activeConn.agentConnId] = status
statuses[contact.activeConn.agentConnId] = status
networkStatuses.value = statuses
} }
fun contactNetworkStatus(contact: Contact): NetworkStatus = fun contactNetworkStatus(contact: Contact): NetworkStatus =
networkStatuses.value[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown() networkStatuses[contact.activeConn.agentConnId] ?: NetworkStatus.Unknown()
fun addTerminalItem(item: TerminalItem) { fun addTerminalItem(item: TerminalItem) {
if (terminalItems.value.size >= 500) { if (terminalItems.size >= 500) {
terminalItems.value = terminalItems.value.takeLast(499) + item terminalItems.removeAt(0)
} else {
terminalItems.value += item
} }
terminalItems.add(item)
} }
} }

View File

@ -1678,11 +1678,9 @@ 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) {
statuses[c.agentConnId] = status chatModel.networkStatuses[c.agentConnId] = status
} }
chatModel.networkStatuses.value = statuses
} }
private fun processContactSubError(contact: Contact, chatError: ChatError) { private fun processContactSubError(contact: Contact, chatError: ChatError) {

View File

@ -34,7 +34,7 @@ fun TerminalView(chatModel: ChatModel, close: () -> Unit) {
close() close()
}) })
TerminalLayout( TerminalLayout(
chatModel.terminalItems, remember { chatModel.terminalItems },
composeState, composeState,
sendCommand = { sendCommand(chatModel, composeState) }, sendCommand = { sendCommand(chatModel, composeState) },
close close
@ -62,7 +62,7 @@ private fun sendCommand(chatModel: ChatModel, composeState: MutableState<Compose
@Composable @Composable
fun TerminalLayout( fun TerminalLayout(
terminalItems: MutableState<List<TerminalItem>>, terminalItems: List<TerminalItem>,
composeState: MutableState<ComposeState>, composeState: MutableState<ComposeState>,
sendCommand: () -> Unit, sendCommand: () -> Unit,
close: () -> Unit close: () -> Unit
@ -115,12 +115,12 @@ fun TerminalLayout(
private var lazyListState = 0 to 0 private var lazyListState = 0 to 0
@Composable @Composable
fun TerminalLog(terminalItems: MutableState<List<TerminalItem>>) { fun TerminalLog(terminalItems: List<TerminalItem>) {
val listState = rememberLazyListState(lazyListState.first, lazyListState.second) val listState = rememberLazyListState(lazyListState.first, lazyListState.second)
DisposableEffect(Unit) { DisposableEffect(Unit) {
onDispose { lazyListState = listState.firstVisibleItemIndex to listState.firstVisibleItemScrollOffset } 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 val clipboard = LocalClipboardManager.current
LazyColumn(state = listState, reverseLayout = true) { LazyColumn(state = listState, reverseLayout = true) {
items(reversedTerminalItems) { item -> items(reversedTerminalItems) { item ->
@ -152,7 +152,7 @@ fun TerminalLog(terminalItems: MutableState<List<TerminalItem>>) {
fun PreviewTerminalLayout() { fun PreviewTerminalLayout() {
SimpleXTheme { SimpleXTheme {
TerminalLayout( TerminalLayout(
terminalItems = remember { mutableStateOf(TerminalItem.sampleData) }, terminalItems = TerminalItem.sampleData,
composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = false)) }, composeState = remember { mutableStateOf(ComposeState(useLinkPreviews = false)) },
sendCommand = {}, sendCommand = {},
close = {} close = {}

View File

@ -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.value) { val contactNetworkStatus = remember(chatModel.networkStatuses.toMap()) {
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)) }

View File

@ -32,4 +32,4 @@ desktop.version_name=1.0.1
kotlin.version=1.8.20 kotlin.version=1.8.20
gradle.plugin.version=7.4.2 gradle.plugin.version=7.4.2
compose.version=1.4.0 compose.version=1.4.3