From 89dee2ab0b6f8fbea79fe162ed240e02b8d8bf21 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 31 May 2025 20:53:38 -0700 Subject: [PATCH] feat(NetworkWarningDialog): add option to never show again --- .../manager/manager/PreferencesManager.kt | 1 + .../dialogs/NetworkWarningDialog.kt | 58 ++++++++++++++----- .../ui/screens/patchopts/PatchOptionsModel.kt | 6 +- .../screens/patchopts/PatchOptionsScreen.kt | 4 +- app/src/main/res/values/strings.xml | 4 +- 5 files changed, 56 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/manager/PreferencesManager.kt b/app/src/main/kotlin/com/aliucord/manager/manager/PreferencesManager.kt index 994e74e..8a943ae 100644 --- a/app/src/main/kotlin/com/aliucord/manager/manager/PreferencesManager.kt +++ b/app/src/main/kotlin/com/aliucord/manager/manager/PreferencesManager.kt @@ -12,4 +12,5 @@ class PreferencesManager(preferences: SharedPreferences) : BasePreferenceManager var devMode by booleanPreference("dev_mode", false) var installer by enumPreference("installer", InstallerSetting.PM) var keepPatchedApks by booleanPreference("keep_patched_apks", false) + var showNetworkWarning by booleanPreference("show_network_warning", true) } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/components/dialogs/NetworkWarningDialog.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/dialogs/NetworkWarningDialog.kt index 74e5679..e71344c 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/components/dialogs/NetworkWarningDialog.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/components/dialogs/NetworkWarningDialog.kt @@ -1,8 +1,12 @@ package com.aliucord.manager.ui.components.dialogs -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.* import androidx.compose.material3.* -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -13,41 +17,69 @@ import com.aliucord.manager.R @Composable fun NetworkWarningDialog( - onConfirm: () -> Unit, - onDismiss: () -> Unit, + onConfirm: (neverShow: Boolean) -> Unit, + onDismiss: (neverShow: Boolean) -> Unit, ) { + val interactionSource = remember(::MutableInteractionSource) + var neverShow by rememberSaveable { mutableStateOf(false) } + val rememberedNeverShow by rememberUpdatedState(neverShow) + AlertDialog( - onDismissRequest = onDismiss, + onDismissRequest = { onDismiss(rememberedNeverShow) }, properties = DialogProperties( dismissOnClickOutside = false, ), confirmButton = { FilledTonalButton( - onClick = onConfirm, + onClick = { onConfirm(rememberedNeverShow) }, colors = ButtonDefaults.filledTonalButtonColors( containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError, ), ) { - Text(stringResource(R.string.action_confirm)) + Text(stringResource(R.string.action_continue)) } }, dismissButton = { TextButton( - onClick = onDismiss, + onClick = { onDismiss(rememberedNeverShow) }, colors = ButtonDefaults.textButtonColors( contentColor = MaterialTheme.colorScheme.onErrorContainer ), ) { - Text(stringResource(R.string.action_cancel)) + Text(stringResource(R.string.navigation_back)) } }, title = { Text(stringResource(R.string.network_warning_title)) }, text = { - Text( - text = stringResource(R.string.network_warning_body), - textAlign = TextAlign.Center, - ) + Column( + verticalArrangement = Arrangement.spacedBy(12.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = stringResource(R.string.network_warning_body), + textAlign = TextAlign.Center, + ) + + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .clickable( + interactionSource = interactionSource, + indication = null, + onClick = { neverShow = !rememberedNeverShow }, + ) + .padding(end = 16.dp) + ) { + Checkbox( + checked = neverShow, + onCheckedChange = { neverShow = it }, + interactionSource = interactionSource, + ) + + Text(stringResource(R.string.network_warning_disable)) + } + } }, icon = { Icon( diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsModel.kt index 9951e36..e74a2aa 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsModel.kt @@ -53,9 +53,10 @@ class PatchOptionsModel( var showNetworkWarningDialog by mutableStateOf(!alreadyShownNetworkWarning && isNetworkDangerous()) private set - fun hideNetworkWarning() { + fun hideNetworkWarning(neverShow: Boolean) { showNetworkWarningDialog = false alreadyShownNetworkWarning = true + prefs.showNetworkWarning = !neverShow } // ---------- Config generation ---------- @@ -133,6 +134,9 @@ class PatchOptionsModel( init { screenModelScope.launch { fetchPkgNameState() } + + if (!prefs.showNetworkWarning) + showNetworkWarningDialog = false } companion object { diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt index 3c992eb..b219c17 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt @@ -66,8 +66,8 @@ class PatchOptionsScreen( if (model.showNetworkWarningDialog) { NetworkWarningDialog( onConfirm = model::hideNetworkWarning, - onDismiss = { - model.hideNetworkWarning() + onDismiss = { neverShow -> + model.hideNetworkWarning(neverShow) navigator.pop() }, ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c3e241f..ca2683e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,6 +10,7 @@ Cancel Retry + Continue Retry installation Open error log Apply @@ -80,7 +81,8 @@ Failed to load Metered network - It appears you are connected to mobile data or a potentially metered network. In order to continue with the installation, several hundred megabytes could be downloaded. Are you sure you want to continue? + It appears you are connected to mobile data or a potentially metered network. Continuing with the installation may result in several hundred megabytes being downloaded. Are you sure you want to continue? + Don\'t show this again Supported version: None