From f63384306a8dcce657b538b2c2aece9bf9a1c456 Mon Sep 17 00:00:00 2001 From: Wang Han <416810799@qq.com> Date: Thu, 27 Feb 2025 09:47:50 +0800 Subject: [PATCH] Avoid popping back stack right after navigation (#2477) This fixes https://github.com/tiann/KernelSU/issues/2462. --- .../src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt | 3 ++- .../java/me/weishu/kernelsu/ui/screen/ExecuteModuleAction.kt | 3 ++- .../app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt | 3 ++- .../app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt | 3 ++- .../app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt | 3 ++- .../app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt | 3 ++- .../main/java/me/weishu/kernelsu/ui/screen/TemplateEditor.kt | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt index 278bfc0f88bb..9cfc06862d3c 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/AppProfile.kt @@ -55,6 +55,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.dropUnlessResumed import coil.compose.AsyncImage import coil.request.ImageRequest import com.ramcosta.composedestinations.annotation.Destination @@ -109,7 +110,7 @@ fun AppProfileScreen( Scaffold( topBar = { TopBar( - onBack = { navigator.popBackStack() }, + onBack = dropUnlessResumed { navigator.popBackStack() }, scrollBehavior = scrollBehavior ) }, diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/ExecuteModuleAction.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/ExecuteModuleAction.kt index 93b06a0ca514..c6be680e2ddf 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/ExecuteModuleAction.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/ExecuteModuleAction.kt @@ -30,6 +30,7 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator @@ -85,7 +86,7 @@ fun ExecuteModuleActionScreen(navigator: DestinationsNavigator, moduleId: String Scaffold( topBar = { TopBar( - onBack = { + onBack = dropUnlessResumed { navigator.popBackStack() }, onSave = { diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt index 6f1ece5a92c2..e61b88d32795 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Flash.kt @@ -43,6 +43,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator @@ -143,7 +144,7 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) { topBar = { TopBar( flashing, - onBack = { + onBack = dropUnlessResumed { navigator.popBackStack() }, onSave = { diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt index aa4843295159..fb12df6b4a09 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Install.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.dropUnlessResumed import com.maxkeppeker.sheets.core.models.base.Header import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState import com.maxkeppeler.sheets.list.ListDialog @@ -133,7 +134,7 @@ fun InstallScreen(navigator: DestinationsNavigator) { Scaffold( topBar = { TopBar( - onBack = { navigator.popBackStack() }, + onBack = dropUnlessResumed { navigator.popBackStack() }, onLkmUpload = onLkmUpload, scrollBehavior = scrollBehavior ) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt index 63c2a81ffe7b..79ac737ed1ec 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Settings.kt @@ -62,6 +62,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.core.content.FileProvider +import androidx.lifecycle.compose.dropUnlessResumed import com.maxkeppeker.sheets.core.models.base.Header import com.maxkeppeker.sheets.core.models.base.IconSource import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState @@ -107,7 +108,7 @@ fun SettingScreen(navigator: DestinationsNavigator) { Scaffold( topBar = { TopBar( - onBack = { + onBack = dropUnlessResumed { navigator.popBackStack() }, scrollBehavior = scrollBehavior diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt index 3074f4e19e0c..4904f160bd74 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Template.kt @@ -49,6 +49,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.dropUnlessResumed import androidx.lifecycle.viewmodel.compose.viewModel import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph @@ -100,7 +101,7 @@ fun AppProfileTemplateScreen( } } TopBar( - onBack = { navigator.popBackStack() }, + onBack = dropUnlessResumed { navigator.popBackStack() }, onSync = { scope.launch { viewModel.fetchTemplates(true) } }, diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/TemplateEditor.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/TemplateEditor.kt index 030320ba329a..535b5c30613f 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/TemplateEditor.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/TemplateEditor.kt @@ -44,6 +44,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType +import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.result.ResultBackNavigator @@ -105,7 +106,7 @@ fun TemplateEditorScreen( }, readOnly = readOnly, summary = titleSummary, - onBack = { navigator.navigateBack(result = !readOnly) }, + onBack = dropUnlessResumed { navigator.navigateBack(result = !readOnly) }, onDelete = { if (deleteAppProfileTemplate(template.id)) { navigator.navigateBack(result = true)