Add module uninstallation confirmation dialog and file type validation message
This commit is contained in:
@@ -47,6 +47,8 @@ import java.net.URLEncoder
|
|||||||
* 以下内核模块功能由KernelPatch开发,经过修改后加入SukiSU Ultra的内核模块功能
|
* 以下内核模块功能由KernelPatch开发,经过修改后加入SukiSU Ultra的内核模块功能
|
||||||
* 开发者:zako, Liaokong
|
* 开发者:zako, Liaokong
|
||||||
*/
|
*/
|
||||||
|
var globalModuleFileName: String = ""
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Destination<RootGraph>
|
@Destination<RootGraph>
|
||||||
@Composable
|
@Composable
|
||||||
@@ -70,13 +72,16 @@ fun KpmScreen(
|
|||||||
val kpmInstallFailed = stringResource(R.string.kpm_install_failed)
|
val kpmInstallFailed = stringResource(R.string.kpm_install_failed)
|
||||||
val cancel = stringResource(R.string.cancel)
|
val cancel = stringResource(R.string.cancel)
|
||||||
val uninstall = stringResource(R.string.uninstall)
|
val uninstall = stringResource(R.string.uninstall)
|
||||||
val FailedtoCheckModuleFile = stringResource(R.string.snackbar_failed_to_check_module_file)
|
val failedToCheckModuleFile = stringResource(R.string.snackbar_failed_to_check_module_file)
|
||||||
val kpmUninstallSuccess = stringResource(R.string.kpm_uninstall_success)
|
val kpmUninstallSuccess = stringResource(R.string.kpm_uninstall_success)
|
||||||
val kpmUninstallFailed = stringResource(R.string.kpm_uninstall_failed)
|
val kpmUninstallFailed = stringResource(R.string.kpm_uninstall_failed)
|
||||||
val kpmInstallMode = stringResource(R.string.kpm_install_mode)
|
val kpmInstallMode = stringResource(R.string.kpm_install_mode)
|
||||||
val kpmInstallModeLoad = stringResource(R.string.kpm_install_mode_load)
|
val kpmInstallModeLoad = stringResource(R.string.kpm_install_mode_load)
|
||||||
val kpmInstallModeEmbed = stringResource(R.string.kpm_install_mode_embed)
|
val kpmInstallModeEmbed = stringResource(R.string.kpm_install_mode_embed)
|
||||||
val kpmInstallModeDescription = stringResource(R.string.kpm_install_mode_description)
|
val kpmInstallModeDescription = stringResource(R.string.kpm_install_mode_description)
|
||||||
|
val invalidFileTypeMessage = stringResource(R.string.invalid_file_type)
|
||||||
|
val confirmTitle = stringResource(R.string.confirm_uninstall_title_with_filename)
|
||||||
|
val confirmContent = stringResource(R.string.confirm_uninstall_content, globalModuleFileName)
|
||||||
|
|
||||||
var tempFileForInstall by remember { mutableStateOf<File?>(null) }
|
var tempFileForInstall by remember { mutableStateOf<File?>(null) }
|
||||||
val installModeDialog = rememberCustomDialog { dismiss ->
|
val installModeDialog = rememberCustomDialog { dismiss ->
|
||||||
@@ -167,7 +172,7 @@ fun KpmScreen(
|
|||||||
|
|
||||||
if (!tempFile.name.endsWith(".kpm")) {
|
if (!tempFile.name.endsWith(".kpm")) {
|
||||||
snackBarHost.showSnackbar(
|
snackBarHost.showSnackbar(
|
||||||
message = "文件类型不正确,请选择 .kpm 文件",
|
message = invalidFileTypeMessage,
|
||||||
duration = SnackbarDuration.Short
|
duration = SnackbarDuration.Short
|
||||||
)
|
)
|
||||||
tempFile.delete()
|
tempFile.delete()
|
||||||
@@ -282,10 +287,12 @@ fun KpmScreen(
|
|||||||
snackBarHost = snackBarHost,
|
snackBarHost = snackBarHost,
|
||||||
kpmUninstallSuccess = kpmUninstallSuccess,
|
kpmUninstallSuccess = kpmUninstallSuccess,
|
||||||
kpmUninstallFailed = kpmUninstallFailed,
|
kpmUninstallFailed = kpmUninstallFailed,
|
||||||
FailedtoCheckModuleFile = FailedtoCheckModuleFile,
|
failedToCheckModuleFile = failedToCheckModuleFile,
|
||||||
uninstall = uninstall,
|
uninstall = uninstall,
|
||||||
cancel = cancel,
|
cancel = cancel,
|
||||||
confirmDialog = confirmDialog
|
confirmDialog = confirmDialog,
|
||||||
|
confirmTitle = confirmTitle,
|
||||||
|
confirmContent = confirmContent
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -369,12 +376,15 @@ private suspend fun handleModuleUninstall(
|
|||||||
snackBarHost: SnackbarHostState,
|
snackBarHost: SnackbarHostState,
|
||||||
kpmUninstallSuccess: String,
|
kpmUninstallSuccess: String,
|
||||||
kpmUninstallFailed: String,
|
kpmUninstallFailed: String,
|
||||||
FailedtoCheckModuleFile: String,
|
failedToCheckModuleFile: String,
|
||||||
uninstall: String,
|
uninstall: String,
|
||||||
cancel: String,
|
cancel: String,
|
||||||
|
confirmTitle : String,
|
||||||
|
confirmContent : String,
|
||||||
confirmDialog: ConfirmDialogHandle
|
confirmDialog: ConfirmDialogHandle
|
||||||
) {
|
) {
|
||||||
val moduleFileName = "${module.id}.kpm"
|
val moduleFileName = "${module.id}.kpm"
|
||||||
|
globalModuleFileName = moduleFileName
|
||||||
val moduleFilePath = "/data/adb/kpm/$moduleFileName"
|
val moduleFilePath = "/data/adb/kpm/$moduleFileName"
|
||||||
|
|
||||||
val fileExists = try {
|
val fileExists = try {
|
||||||
@@ -383,15 +393,14 @@ private suspend fun handleModuleUninstall(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("KsuCli", "Failed to check module file existence: ${e.message}", e)
|
Log.e("KsuCli", "Failed to check module file existence: ${e.message}", e)
|
||||||
snackBarHost.showSnackbar(
|
snackBarHost.showSnackbar(
|
||||||
message = FailedtoCheckModuleFile,
|
message = failedToCheckModuleFile,
|
||||||
duration = SnackbarDuration.Short
|
duration = SnackbarDuration.Short
|
||||||
)
|
)
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
val confirmResult = confirmDialog.awaitConfirm(
|
val confirmResult = confirmDialog.awaitConfirm(
|
||||||
title = "将卸载以下kpm模块:\n$moduleFileName",
|
title = confirmTitle,
|
||||||
content = "The following kpm modules will be uninstalled:\n$moduleFileName",
|
content = confirmContent,
|
||||||
confirm = uninstall,
|
confirm = uninstall,
|
||||||
dismiss = cancel
|
dismiss = cancel
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -259,4 +259,7 @@
|
|||||||
<string name="confirm_uninstall_confirm">删除</string>
|
<string name="confirm_uninstall_confirm">删除</string>
|
||||||
<string name="confirm_uninstall_dismiss">取消</string>
|
<string name="confirm_uninstall_dismiss">取消</string>
|
||||||
<string name="theme_color">主题颜色</string>
|
<string name="theme_color">主题颜色</string>
|
||||||
|
<string name="invalid_file_type">文件类型不正确,请选择 .kpm 文件</string>
|
||||||
|
<string name="confirm_uninstall_title_with_filename">卸载</string>
|
||||||
|
<string name="confirm_uninstall_content">将卸载以下 kpm 模块:\n%s</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -263,4 +263,7 @@
|
|||||||
<string name="confirm_uninstall_confirm">removing</string>
|
<string name="confirm_uninstall_confirm">removing</string>
|
||||||
<string name="confirm_uninstall_dismiss">abolish</string>
|
<string name="confirm_uninstall_dismiss">abolish</string>
|
||||||
<string name="theme_color">Theme Color</string>
|
<string name="theme_color">Theme Color</string>
|
||||||
|
<string name="invalid_file_type">Incorrect file type, select .kpm file</string>
|
||||||
|
<string name="confirm_uninstall_title_with_filename">uninstallation</string>
|
||||||
|
<string name="confirm_uninstall_content">The following kpm modules will be uninstalled:\n%s</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user