refactor: minor refactor of tunnel options

This commit is contained in:
Zane Schepke
2025-01-18 04:42:20 -05:00
parent 932d27edd7
commit 548362cdde
2 changed files with 22 additions and 19 deletions
@@ -57,6 +57,11 @@ fun OptionsScreen(tunnelConfig: TunnelConfig, viewModel: TunnelOptionsViewModel
LaunchedEffect(tunnelConfig.tunnelNetworks) {
currentText = ""
}
val onPingToggle = {
viewModel.saveTunnelChanges(tunnelConfig.copy(isPingEnabled = !tunnelConfig.isPingEnabled))
}
Scaffold(
topBar = {
TopNavBar(tunnelConfig.name)
@@ -165,10 +170,10 @@ fun OptionsScreen(tunnelConfig: TunnelConfig, viewModel: TunnelOptionsViewModel
trailing = {
ScaledSwitch(
checked = tunnelConfig.isPingEnabled,
onClick = { viewModel.onToggleRestartOnPing(tunnelConfig) },
onClick = { onPingToggle() },
)
},
onClick = { viewModel.onToggleRestartOnPing(tunnelConfig) },
onClick = { onPingToggle() },
),
)
if (tunnelConfig.isPingEnabled) {
@@ -188,8 +193,7 @@ fun OptionsScreen(tunnelConfig: TunnelConfig, viewModel: TunnelOptionsViewModel
},
)
fun isSecondsError(seconds: String?): Boolean {
return seconds?.let { value -> if (value.isBlank()) false else value.toLong() >= Long.MAX_VALUE / 1000 }
?: false
return seconds?.let { value -> if (value.isBlank()) false else value.toLong() >= Long.MAX_VALUE / 1000 } == true
}
SubmitConfigurationTextBox(
tunnelConfig.pingInterval?.let { (it / 1000).toString() },
@@ -201,9 +205,7 @@ fun OptionsScreen(tunnelConfig: TunnelConfig, viewModel: TunnelOptionsViewModel
),
isErrorValue = ::isSecondsError,
onSubmit = {
viewModel.saveTunnelChanges(
tunnelConfig.copy(pingInterval = if (it.isBlank()) null else it.toLong() * 1000),
)
viewModel.onPingIntervalChange(tunnelConfig, it)
},
)
SubmitConfigurationTextBox(
@@ -214,11 +216,7 @@ fun OptionsScreen(tunnelConfig: TunnelConfig, viewModel: TunnelOptionsViewModel
keyboardType = KeyboardType.Number,
),
isErrorValue = ::isSecondsError,
onSubmit = {
viewModel.saveTunnelChanges(
tunnelConfig.copy(pingCooldown = if (it.isBlank()) null else it.toLong() * 1000),
)
},
onSubmit = { viewModel.onPingCoolDownChange(tunnelConfig, it) },
)
},
),
@@ -14,13 +14,6 @@ class TunnelOptionsViewModel
constructor(
private val appDataRepository: AppDataRepository,
) : ViewModel() {
fun onToggleRestartOnPing(tunnelConfig: TunnelConfig) = viewModelScope.launch {
appDataRepository.tunnels.save(
tunnelConfig.copy(
isPingEnabled = !tunnelConfig.isPingEnabled,
),
)
}
fun onTogglePrimaryTunnel(tunnelConfig: TunnelConfig) = viewModelScope.launch {
appDataRepository.tunnels.updatePrimaryTunnel(
@@ -34,4 +27,16 @@ constructor(
fun saveTunnelChanges(tunnelConfig: TunnelConfig) = viewModelScope.launch {
appDataRepository.tunnels.save(tunnelConfig)
}
fun onPingIntervalChange(tunnelConfig: TunnelConfig, interval: String) = viewModelScope.launch {
val interval = if (interval.isBlank()) null else interval.toLong() * 1000
saveTunnelChanges(
tunnelConfig.copy(pingInterval = interval),
)
}
fun onPingCoolDownChange(tunnelConfig: TunnelConfig, cooldown: String) = viewModelScope.launch {
val cooldown = if (cooldown.isBlank()) null else cooldown.toLong() * 1000
saveTunnelChanges(tunnelConfig.copy(pingCooldown = cooldown))
}
}