Add extension’s setting to source’s long click

This commit is contained in:
Cuong M. Tran 2024-02-11 02:46:01 +07:00
parent 2d42be6958
commit 3c6696d671
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
3 changed files with 40 additions and 10 deletions

View file

@ -55,10 +55,13 @@ import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import eu.kanade.domain.source.model.installedExtension
import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreenModel
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
import eu.kanade.tachiyomi.util.system.LocaleHelper
import exh.source.EH_SOURCE_ID
import exh.source.EXH_SOURCE_ID
import kotlinx.collections.immutable.ImmutableList
import tachiyomi.domain.source.model.Pin
import tachiyomi.domain.source.model.Source
@ -76,6 +79,7 @@ import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide
import tachiyomi.presentation.core.util.plus
import tachiyomi.presentation.core.util.runOnEnterKeyPressed
import tachiyomi.presentation.core.util.secondaryItemAlpha
import tachiyomi.source.local.LocalSource
import tachiyomi.source.local.isLocal
@Composable
@ -418,6 +422,9 @@ fun SourceOptionsDialog(
onClickToggleDataSaver: (() -> Unit)?,
// SY <--
onDismiss: () -> Unit,
// KMK -->
onClickSettings: (() -> Unit)? = null,
// KMK <--
) {
AlertDialog(
title = {
@ -466,6 +473,18 @@ fun SourceOptionsDialog(
)
}
// SY <--
// KMK -->
if (onClickSettings != null && source.installedExtension !== null &&
!(source.id == LocalSource.ID || source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID)) {
Text(
text = stringResource(MR.strings.label_extension_info),
modifier = Modifier
.clickable(onClick = onClickSettings)
.fillMaxWidth()
.padding(vertical = 16.dp),
)
}
// KMK <--
}
},
onDismissRequest = onDismiss,

View file

@ -23,11 +23,19 @@ fun SourceSettingsButton(
id: Long,
@Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier
) {
// Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions
if (id == LocalSource.ID || id == EH_SOURCE_ID || id == EXH_SOURCE_ID) return
// Create a fake source
val source = Source(id,"", "", supportsLatest = false, isStub = false)
SourceSettingsButton(source = source)
}
@Composable
fun SourceSettingsButton(
source: Source,
@Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier
) {
// Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions
if (source.id == LocalSource.ID || source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID) return
val navigator = LocalNavigator.currentOrThrow
IconButton(onClick = {
if (source.installedExtension !== null)
@ -39,11 +47,4 @@ fun SourceSettingsButton(
)
}
}
@Composable
fun SourceSettingsButton(
source: Source,
@Suppress("UNUSED_PARAMETER") modifier: Modifier = Modifier
) {
SourceSettingsButton(id = source.id)
}
// KMK <--

View file

@ -14,11 +14,13 @@ import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.source.model.installedExtension
import eu.kanade.presentation.browse.SourceCategoriesDialog
import eu.kanade.presentation.browse.SourceOptionsDialog
import eu.kanade.presentation.browse.SourcesScreen
import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.TabContent
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen.SmartSearchConfig
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing
@ -113,7 +115,15 @@ fun Screen.sourcesTab(
screenModel.toggleExcludeFromDataSaver(source)
screenModel.closeDialog()
}.takeIf { state.dataSaverEnabled },
// SY <--
onDismiss = screenModel::closeDialog,
// KMK -->
onClickSettings = {
if (source.installedExtension !== null)
navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName))
screenModel.closeDialog()
},
// KMK <--
)
}
is SourcesScreenModel.Dialog.SourceCategories -> {