fix: android tv hide kernel mode, ping toggle, import sheet

closes #1008

#1008
This commit is contained in:
Zane Schepke
2025-10-31 00:34:01 -04:00
parent bfe3533030
commit 6637539d1f
6 changed files with 32 additions and 18 deletions
@@ -1,11 +1,12 @@
package com.zaneschepke.wireguardautotunnel.domain.events
import androidx.annotation.Keep
import com.zaneschepke.wireguardautotunnel.domain.model.TunnelConfig
sealed class AutoTunnelEvent {
data class Start(val tunnelConfig: TunnelConfig? = null) : AutoTunnelEvent()
@Keep data class Start(val tunnelConfig: TunnelConfig? = null) : AutoTunnelEvent()
data object Stop : AutoTunnelEvent()
@Keep data object Stop : AutoTunnelEvent()
data object DoNothing : AutoTunnelEvent()
@Keep data object DoNothing : AutoTunnelEvent()
}
@@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.LocalIsAndroidTV
@Composable
fun SheetOption(
@@ -50,9 +51,12 @@ fun SheetOption(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CustomBottomSheet(options: List<SheetOption>, onDismiss: () -> Unit) {
val isTv = LocalIsAndroidTV.current
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = isTv)
ModalBottomSheet(
containerColor = MaterialTheme.colorScheme.surface,
onDismissRequest = onDismiss,
sheetState = sheetState,
) {
options.forEachIndexed { index, option ->
SheetOption(option.label, option.leadingIcon, option.onClick, option.selected)
@@ -212,11 +212,12 @@ fun SettingsScreen(viewModel: SettingsViewModel = hiltViewModel()) {
)
}
} else null,
trailing = {
trailing = { modifier ->
SwitchWithDivider(
checked = uiState.monitoring.isPingEnabled,
onClick = { viewModel.setPingEnabled(it) },
enabled = !sharedUiState.proxyEnabled,
modifier = modifier,
)
},
onClick = { navController.push(Route.TunnelMonitoring) },
@@ -3,6 +3,7 @@ package com.zaneschepke.wireguardautotunnel.ui.screens.settings.proxy.compoents
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import com.zaneschepke.wireguardautotunnel.data.model.AppMode
import com.zaneschepke.wireguardautotunnel.ui.LocalIsAndroidTV
import com.zaneschepke.wireguardautotunnel.ui.common.sheet.CustomBottomSheet
import com.zaneschepke.wireguardautotunnel.ui.common.sheet.SheetOption
import com.zaneschepke.wireguardautotunnel.util.extensions.asIcon
@@ -15,19 +16,23 @@ fun AppModeBottomSheet(
onDismiss: () -> Unit,
) {
val context = LocalContext.current
val isTv = LocalIsAndroidTV.current
CustomBottomSheet(
enumValues<AppMode>().map {
val icon = it.asIcon()
SheetOption(
icon,
label = it.asTitleString(context),
onClick = {
onDismiss()
onAppModeChange(it)
},
selected = appMode == it,
)
}
enumValues<AppMode>()
.filterNot { isTv && it == AppMode.KERNEL }
.map {
val icon = it.asIcon()
SheetOption(
icon,
label = it.asTitleString(context),
onClick = {
onDismiss()
onAppModeChange(it)
},
selected = appMode == it,
)
}
) {
onDismiss()
}
@@ -419,7 +419,7 @@ class AndroidNetworkMonitor(
cellularConnected = cellularConnected,
ethernetConnected = ethernetConnected,
)
.also { Timber.d("Connectivity Status: $it") }
.also { Timber.i("Connectivity Status: $it") }
}
.scan(
ConnectivityState(
@@ -16,7 +16,10 @@ data class WifiState(
val securityType: WifiSecurityType? = null,
val locationPermissionsGranted: Boolean,
val locationServicesEnabled: Boolean,
)
) {
override fun toString(): String =
"connected=$connected, ssid=${if(ssid == AndroidNetworkMonitor.ANDROID_UNKNOWN_SSID || ssid == null) ssid else ssid.first() + "..."} securityType=$securityType, locationPermissionsGranted=$locationPermissionsGranted"
}
data class Permissions(
val locationServicesEnabled: Boolean = false,