From 995b51926da6b9afe349c7f551dc1931998c4e2c Mon Sep 17 00:00:00 2001 From: kari-ts Date: Fri, 20 Sep 2024 13:12:08 -0700 Subject: [PATCH] android: fix Android build warnings Updates tailscale/corp#22284 Signed-off-by: kari-ts --- .../com/tailscale/ipn/ui/model/Permissions.kt | 2 +- .../com/tailscale/ipn/ui/view/ExitNodePicker.kt | 4 +--- .../java/com/tailscale/ipn/ui/view/MainView.kt | 4 ++-- .../com/tailscale/ipn/ui/view/ManagedByView.kt | 17 +++++++++++------ .../tailscale/ipn/ui/viewModel/MainViewModel.kt | 1 + 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/tailscale/ipn/ui/model/Permissions.kt b/android/src/main/java/com/tailscale/ipn/ui/model/Permissions.kt index 8579f0b..10e4367 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/model/Permissions.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/model/Permissions.kt @@ -22,7 +22,7 @@ object Permissions { @Composable get() { val permissionStates = rememberMultiplePermissionsState(permissions = all.map { it.name }) - return all.zip(permissionStates.permissions).filter { (permission, state) -> + return all.zip(permissionStates.permissions).filter { (_, state) -> !state.status.isGranted && !state.status.shouldShowRationale } } diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/ExitNodePicker.kt b/android/src/main/java/com/tailscale/ipn/ui/view/ExitNodePicker.kt index 19bec62..7e94508 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/view/ExitNodePicker.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/view/ExitNodePicker.kt @@ -61,9 +61,7 @@ fun ExitNodePicker( if (forcedExitNodeId != null) { Text( text = - managedByOrganization?.let { - stringResource(R.string.exit_node_mdm_orgname, it) - } ?: stringResource(R.string.exit_node_mdm), + stringResource(R.string.exit_node_mdm_orgname, managedByOrganization), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 16.dp, bottom = 4.dp)) diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt index df19d78..7692276 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt @@ -192,7 +192,7 @@ fun MainView( Modifier.weight(1f) .focusable() .clickable { navigation.onNavigateToSettings() } - .padding(8.dp), + .padding(8.dp), contentAlignment = Alignment.CenterEnd) { when (user) { null -> SettingsButton { navigation.onNavigateToSettings() } @@ -251,7 +251,7 @@ fun MainView( } } - currentPingDevice?.let { peer -> + currentPingDevice?.let { ModalBottomSheet(onDismissRequest = { viewModel.onPingDismissal() }) { PingView(model = viewModel.pingViewModel) } diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/ManagedByView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/ManagedByView.kt index e66e89a..09de6f8 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/view/ManagedByView.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/view/ManagedByView.kt @@ -6,6 +6,7 @@ package com.tailscale.ipn.ui.view import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeContentPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -18,31 +19,36 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel import com.tailscale.ipn.R import com.tailscale.ipn.mdm.MDMSettings -import com.tailscale.ipn.ui.viewModel.IpnViewModel @Composable -fun ManagedByView(backToSettings: BackNavigation, model: IpnViewModel = viewModel()) { +fun ManagedByView(backToSettings: BackNavigation) { Scaffold(topBar = { Header(R.string.managed_by, onBack = backToSettings) }) { innerPadding -> Column( verticalArrangement = Arrangement.spacedBy(space = 20.dp, alignment = Alignment.CenterVertically), horizontalAlignment = Alignment.Start, - modifier = Modifier.fillMaxWidth().safeContentPadding().verticalScroll(rememberScrollState())) { + modifier = + Modifier.fillMaxWidth() + .padding(innerPadding) + .safeContentPadding() + .verticalScroll(rememberScrollState())) { val managedByOrganization = MDMSettings.managedByOrganizationName.flow.collectAsState().value.value val managedByCaption = MDMSettings.managedByCaption.flow.collectAsState().value.value val managedByURL = MDMSettings.managedByURL.flow.collectAsState().value.value + managedByOrganization?.let { Text(stringResource(R.string.managed_by_explainer_orgName, it)) } ?: run { Text(stringResource(R.string.managed_by_explainer)) } + managedByCaption?.let { if (it.isNotEmpty()) { Text(it) } } + managedByURL?.let { OpenURLButton(stringResource(R.string.open_support), it) } } } @@ -51,6 +57,5 @@ fun ManagedByView(backToSettings: BackNavigation, model: IpnViewModel = viewMode @Preview @Composable fun ManagedByViewPreview() { - val vm = IpnViewModel() - ManagedByView(backToSettings = {}, vm) + ManagedByView(backToSettings = {}) } diff --git a/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt b/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt index cdfaace..f1c7641 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt @@ -32,6 +32,7 @@ import kotlinx.coroutines.launch import java.time.Duration class MainViewModelFactory(private val vpnViewModel: VpnViewModel) : ViewModelProvider.Factory { + @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { if (modelClass.isAssignableFrom(MainViewModel::class.java)) { return MainViewModel(vpnViewModel) as T