desktop: don't show device specific network and database settings when connected to remote host (#3449)

This commit is contained in:
spaced4ndy 2023-11-24 19:38:19 +04:00 committed by GitHub
parent 7f9a490edb
commit 9fb4b3cf40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 107 additions and 94 deletions

View File

@ -40,6 +40,7 @@ fun DatabaseView(
m: ChatModel,
showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit)
) {
val currentRemoteHost by remember { chatModel.currentRemoteHost }
val progressIndicator = remember { mutableStateOf(false) }
val prefs = m.controller.appPrefs
val useKeychain = remember { mutableStateOf(prefs.storeDBPassphrase.get()) }
@ -68,6 +69,7 @@ fun DatabaseView(
val user = m.currentUser.value
val rhId = user?.remoteHostId
DatabaseLayout(
currentRemoteHost = currentRemoteHost,
progressIndicator.value,
remember { m.chatRunning }.value != false,
m.chatDbChanged.value,
@ -119,6 +121,7 @@ fun DatabaseView(
@Composable
fun DatabaseLayout(
currentRemoteHost: RemoteHostInfo?,
progressIndicator: Boolean,
runChat: Boolean,
chatDbChanged: Boolean,
@ -165,6 +168,8 @@ fun DatabaseLayout(
}
}
)
if (currentRemoteHost == null) {
SectionDividerSpaced(maxTopPadding = true)
SectionView(stringResource(MR.strings.run_chat_section)) {
@ -262,6 +267,8 @@ fun DatabaseLayout(
String.format(stringResource(MR.strings.total_files_count_and_size), count, formatBytes(size))
}
)
}
SectionBottomSpacer()
}
}
@ -666,6 +673,7 @@ private fun operationEnded(m: ChatModel, progressIndicator: MutableState<Boolean
fun PreviewDatabaseLayout() {
SimpleXTheme {
DatabaseLayout(
currentRemoteHost = null,
progressIndicator = false,
runChat = true,
chatDbChanged = false,

View File

@ -28,7 +28,6 @@ import chat.simplex.common.model.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.chat.item.ClickableText
import chat.simplex.common.views.helpers.*
import chat.simplex.common.model.*
import chat.simplex.common.views.helpers.annotatedStringResource
import chat.simplex.res.MR
@ -39,6 +38,7 @@ fun NetworkAndServersView(
showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
showCustomModal: (@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit),
) {
val currentRemoteHost by remember { chatModel.currentRemoteHost }
// It's not a state, just a one-time value. Shouldn't be used in any state-related situations
val netCfg = remember { chatModel.controller.getNetCfg() }
val networkUseSocksProxy: MutableState<Boolean> = remember { mutableStateOf(netCfg.useSocksProxy) }
@ -52,6 +52,7 @@ fun NetworkAndServersView(
val proxyPort = remember { derivedStateOf { chatModel.controller.appPrefs.networkProxyHostPort.state.value?.split(":")?.lastOrNull()?.toIntOrNull() ?: 9050 } }
NetworkAndServersLayout(
currentRemoteHost = currentRemoteHost,
developerTools = developerTools,
networkUseSocksProxy = networkUseSocksProxy,
onionHosts = onionHosts,
@ -150,6 +151,7 @@ fun NetworkAndServersView(
}
@Composable fun NetworkAndServersLayout(
currentRemoteHost: RemoteHostInfo?,
developerTools: Boolean,
networkUseSocksProxy: MutableState<Boolean>,
onionHosts: MutableState<OnionHosts>,
@ -172,6 +174,7 @@ fun NetworkAndServersView(
SettingsActionItem(painterResource(MR.images.ic_dns), stringResource(MR.strings.xftp_servers), showCustomModal { m, close -> ProtocolServersView(m, m.remoteHostId, ServerProtocol.XFTP, close) })
if (currentRemoteHost == null) {
UseSocksProxySwitch(networkUseSocksProxy, proxyPort, toggleSocksProxy, showSettingsModal)
UseOnionHosts(onionHosts, networkUseSocksProxy, showSettingsModal, useOnion)
if (developerTools) {
@ -179,7 +182,8 @@ fun NetworkAndServersView(
}
SettingsActionItem(painterResource(MR.images.ic_cable), stringResource(MR.strings.network_settings), showSettingsModal { AdvancedNetworkSettingsView(it) })
}
if (networkUseSocksProxy.value) {
}
if (currentRemoteHost == null && networkUseSocksProxy.value) {
SectionCustomFooter {
Column {
Text(annotatedStringResource(MR.strings.disable_onion_hosts_when_not_supported))
@ -448,6 +452,7 @@ private fun showUpdateNetworkSettingsDialog(
fun PreviewNetworkAndServersLayout() {
SimpleXTheme {
NetworkAndServersLayout(
currentRemoteHost = null,
developerTools = true,
networkUseSocksProxy = remember { mutableStateOf(true) },
proxyPort = remember { mutableStateOf(9050) },