diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt index f27e7ec9f4..da39b4fb98 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/NetworkAndServers.kt @@ -484,6 +484,7 @@ fun SocksProxySettings( onionHosts.value = it } } + UseOnionHostsDescription(onionHosts) SectionTextFooter(annotatedStringResource(MR.strings.disable_onion_hosts_when_not_supported)) SectionDividerSpaced(maxTopPadding = true) @@ -558,13 +559,8 @@ private fun showUnsavedSocksHostPortAlert(confirmText: String, save: () -> Unit, ) } -@Composable -fun UseOnionHosts( - onionHosts: MutableState, - enabled: State, - useOnion: (OnionHosts) -> Unit, -) { - val values = remember { +private val onionHostsValues: List> + @Composable get() = remember { OnionHosts.values().map { when (it) { OnionHosts.NEVER -> ValueTitleDesc(OnionHosts.NEVER, generalGetString(MR.strings.network_use_onion_hosts_no), AnnotatedString(generalGetString(MR.strings.network_use_onion_hosts_no_desc))) @@ -574,31 +570,39 @@ fun UseOnionHosts( } } - Column { - if (enabled.value) { - ExposedDropDownSettingRow( - generalGetString(MR.strings.network_use_onion_hosts), - values.map { it.value to it.title }, - onionHosts, - icon = painterResource(MR.images.ic_security), - enabled = enabled, - onSelected = useOnion - ) - } else { - // In reality, when socks proxy is disabled, this option acts like NEVER regardless of what was chosen before - ExposedDropDownSettingRow( - generalGetString(MR.strings.network_use_onion_hosts), - listOf(OnionHosts.NEVER to generalGetString(MR.strings.network_use_onion_hosts_no)), - remember { mutableStateOf(OnionHosts.NEVER) }, - icon = painterResource(MR.images.ic_security), - enabled = enabled, - onSelected = {} - ) - } - SectionTextFooter(values.firstOrNull { it.value == onionHosts.value }?.description ?: AnnotatedString("")) +@Composable +fun UseOnionHosts( + onionHosts: MutableState, + enabled: State, + useOnion: (OnionHosts) -> Unit, +) { + if (enabled.value) { + ExposedDropDownSettingRow( + generalGetString(MR.strings.network_use_onion_hosts), + onionHostsValues.map { it.value to it.title }, + onionHosts, + icon = painterResource(MR.images.ic_security), + enabled = enabled, + onSelected = useOnion + ) + } else { + // In reality, when socks proxy is disabled, this option acts like NEVER regardless of what was chosen before + ExposedDropDownSettingRow( + generalGetString(MR.strings.network_use_onion_hosts), + listOf(OnionHosts.NEVER to generalGetString(MR.strings.network_use_onion_hosts_no)), + remember { mutableStateOf(OnionHosts.NEVER) }, + icon = painterResource(MR.images.ic_security), + enabled = enabled, + onSelected = {} + ) } } +@Composable +fun UseOnionHostsDescription(onionHosts: MutableState) { + SectionTextFooter(onionHostsValues.firstOrNull { it.value == onionHosts.value }?.description ?: AnnotatedString("")) +} + @Composable fun SessionModePicker( sessionMode: MutableState,