mirror of
https://github.com/mihonapp/mihon.git
synced 2025-03-13 16:20:08 +01:00
Confirm Removal of Ext Installed via Private Installer
This commit is contained in:
parent
6b2bba4e54
commit
472614435c
@ -1,5 +1,6 @@
|
||||
package eu.kanade.presentation.browse
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.animation.core.animateDpAsState
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
@ -55,6 +56,7 @@ import eu.kanade.tachiyomi.extension.model.InstallStep
|
||||
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionUiModel
|
||||
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsScreenModel
|
||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
||||
import eu.kanade.tachiyomi.util.system.isPackageInstalled
|
||||
import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import tachiyomi.i18n.MR
|
||||
@ -248,6 +250,7 @@ private fun ExtensionContent(
|
||||
}
|
||||
}
|
||||
},
|
||||
context = context,
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -278,16 +281,47 @@ private fun ExtensionItem(
|
||||
onClickItemAction: (Extension) -> Unit,
|
||||
onClickItemSecondaryAction: (Extension) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
context: Context,
|
||||
) {
|
||||
val (extension, installStep) = item
|
||||
var showUninstallConfirmation by remember { mutableStateOf(false) }
|
||||
|
||||
if (showUninstallConfirmation) {
|
||||
ExtensionUninstallConfirmation(
|
||||
extensionName = extension.name,
|
||||
onClickConfirm = {
|
||||
onLongClickItem(extension)
|
||||
showUninstallConfirmation = false
|
||||
},
|
||||
onClickDismiss = {
|
||||
showUninstallConfirmation = false
|
||||
},
|
||||
onDismissRequest = {
|
||||
showUninstallConfirmation = false
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
BaseBrowseItem(
|
||||
modifier = modifier
|
||||
.combinedClickable(
|
||||
onClick = { onClickItem(extension) },
|
||||
onLongClick = { onLongClickItem(extension) },
|
||||
onLongClick = {
|
||||
if (context.isPackageInstalled(extension.pkgName)) {
|
||||
onLongClickItem(extension)
|
||||
} else {
|
||||
showUninstallConfirmation = true
|
||||
}
|
||||
},
|
||||
),
|
||||
onClickItem = { onClickItem(extension) },
|
||||
onLongClickItem = { onLongClickItem(extension) },
|
||||
onLongClickItem = {
|
||||
if (context.isPackageInstalled(extension.pkgName)) {
|
||||
onLongClickItem(extension)
|
||||
} else {
|
||||
showUninstallConfirmation = true
|
||||
}
|
||||
},
|
||||
icon = {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
@ -540,3 +574,31 @@ private fun ExtensionTrustDialog(
|
||||
onDismissRequest = onDismissRequest,
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ExtensionUninstallConfirmation(
|
||||
extensionName: String,
|
||||
onClickConfirm: () -> Unit,
|
||||
onClickDismiss: () -> Unit,
|
||||
onDismissRequest: () -> Unit,
|
||||
) {
|
||||
AlertDialog(
|
||||
title = {
|
||||
Text(text = stringResource(MR.strings.ext_confirm_remove))
|
||||
},
|
||||
text = {
|
||||
Text(text = stringResource(MR.strings.remove_private_extension_message, extensionName))
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = onClickConfirm) {
|
||||
Text(text = stringResource(MR.strings.ext_remove))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = onClickDismiss) {
|
||||
Text(text = stringResource(MR.strings.action_cancel))
|
||||
}
|
||||
},
|
||||
onDismissRequest = onDismissRequest,
|
||||
)
|
||||
}
|
||||
|
@ -325,10 +325,13 @@
|
||||
<string name="ext_trust">Trust</string>
|
||||
<string name="ext_untrusted">Untrusted</string>
|
||||
<string name="ext_uninstall">Uninstall</string>
|
||||
<string name="ext_remove">Remove</string>
|
||||
<string name="ext_confirm_remove">Remove Extension?</string>
|
||||
<string name="ext_app_info">App info</string>
|
||||
<string name="untrusted_extension">Untrusted extension</string>
|
||||
<string name="untrusted_extension_message">Malicious extensions can read any stored login credentials or execute arbitrary code.\n\nBy trusting this extension, you accept these risks.</string>
|
||||
<string name="obsolete_extension_message">This extension is no longer available. It may not function properly and can cause issues with the app. Uninstalling it is recommended.</string>
|
||||
<string name="remove_private_extension_message">Do you really want to remove the \"%s\" extension?</string>
|
||||
<string name="extension_api_error">Failed to fetch available extensions</string>
|
||||
<string name="ext_info_version">Version</string>
|
||||
<string name="ext_info_language">Language</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user