mirror of
https://github.com/wgtunnel/android.git
synced 2026-07-03 14:07:49 +02:00
refactor: minor refactor of tunnel options
This commit is contained in:
+10
-12
@@ -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) },
|
||||
)
|
||||
},
|
||||
),
|
||||
|
||||
+12
-7
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user