mirror of
https://github.com/mihonapp/mihon.git
synced 2025-03-13 16:20:08 +01:00
Move to ExtensionTab
This commit is contained in:
parent
08f86fd92f
commit
645e30649f
@ -1,6 +1,5 @@
|
||||
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
|
||||
@ -56,7 +55,6 @@ 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
|
||||
@ -250,7 +248,6 @@ private fun ExtensionContent(
|
||||
}
|
||||
}
|
||||
},
|
||||
context = context,
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -281,43 +278,16 @@ private fun ExtensionItem(
|
||||
onClickItemAction: (Extension) -> Unit,
|
||||
onClickItemSecondaryAction: (Extension) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
context: Context,
|
||||
) {
|
||||
val (extension, installStep) = item
|
||||
var showUninstallConfirmation by remember { mutableStateOf(false) }
|
||||
|
||||
val internalOnLongClickItem: () -> Unit = {
|
||||
if (context.isPackageInstalled(extension.pkgName)) {
|
||||
onLongClickItem(extension)
|
||||
} else {
|
||||
showUninstallConfirmation = true
|
||||
}
|
||||
}
|
||||
|
||||
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 = internalOnLongClickItem,
|
||||
onLongClick = { onLongClickItem(extension) },
|
||||
),
|
||||
onClickItem = { onClickItem(extension) },
|
||||
onLongClickItem = internalOnLongClickItem,
|
||||
onLongClickItem = { onLongClickItem(extension) },
|
||||
icon = {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
@ -570,31 +540,3 @@ 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,
|
||||
)
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.extension
|
||||
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import eu.kanade.presentation.browse.ExtensionScreen
|
||||
@ -12,6 +18,7 @@ import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
|
||||
import eu.kanade.tachiyomi.ui.webview.WebViewScreen
|
||||
import eu.kanade.tachiyomi.util.system.isPackageInstalled
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.presentation.core.i18n.stringResource
|
||||
@ -22,6 +29,8 @@ fun extensionsTab(
|
||||
): TabContent {
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
val state by extensionsScreenModel.state.collectAsState()
|
||||
val context = LocalContext.current
|
||||
val showUninstallConfirmation = remember { mutableStateOf<Extension?>(null) }
|
||||
|
||||
return TabContent(
|
||||
titleRes = MR.strings.label_extensions,
|
||||
@ -45,7 +54,13 @@ fun extensionsTab(
|
||||
onLongClickItem = { extension ->
|
||||
when (extension) {
|
||||
is Extension.Available -> extensionsScreenModel.installExtension(extension)
|
||||
else -> extensionsScreenModel.uninstallExtension(extension)
|
||||
else -> {
|
||||
if (context.isPackageInstalled(extension.pkgName)) {
|
||||
extensionsScreenModel.uninstallExtension(extension)
|
||||
} else {
|
||||
showUninstallConfirmation.value = extension
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
onClickItemCancel = extensionsScreenModel::cancelInstallUpdateExtension,
|
||||
@ -68,6 +83,50 @@ fun extensionsTab(
|
||||
onUpdateExtension = extensionsScreenModel::updateExtension,
|
||||
onRefresh = extensionsScreenModel::findAvailableExtensions,
|
||||
)
|
||||
|
||||
if (showUninstallConfirmation.value != null) {
|
||||
ExtensionUninstallConfirmation(
|
||||
extensionName = showUninstallConfirmation.value!!.name,
|
||||
onClickConfirm = {
|
||||
extensionsScreenModel.uninstallExtension(showUninstallConfirmation.value!!)
|
||||
showUninstallConfirmation.value = null
|
||||
},
|
||||
onClickDismiss = {
|
||||
showUninstallConfirmation.value = null
|
||||
},
|
||||
onDismissRequest = {
|
||||
showUninstallConfirmation.value = null
|
||||
},
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
@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,
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user