Move SourceSettingsButton to Presentation domain

This commit is contained in:
Cuong M. Tran 2024-01-30 18:33:26 +07:00
parent 67575fe3df
commit 64d1ef89a6
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
2 changed files with 45 additions and 36 deletions

View file

@ -25,7 +25,6 @@ import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.PushPin
import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.outlined.PushPin
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@ -56,16 +55,11 @@ 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 cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.source.model.installedExtension
import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
import eu.kanade.presentation.browse.components.SourceSettingsButton
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
@ -83,7 +77,6 @@ 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
@ -389,13 +382,9 @@ private fun SourceItem(
)
}
// SY <--
// AM (BROWSE) -->
if (source.id != LocalSource.ID) {
SourceSettingsButton(
source = source,
)
}
// <-- AM (BROWSE)
// KMK -->
SourceSettingsButton(source = source)
// KMK <--
},
)
}
@ -423,27 +412,6 @@ private fun SourcePinButton(
}
}
// AM (BROWSE) -->
@Composable
private fun SourceSettingsButton(
source: Source,
) {
// Avoid E-Hentai & ExHentai which is built-in & not actually installed extensions
if (source.id == EH_SOURCE_ID || source.id == EXH_SOURCE_ID) return
val navigator = LocalNavigator.currentOrThrow
IconButton(onClick = {
if (source.installedExtension !== null)
navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName))
}) {
Icon(
imageVector = Icons.Outlined.Settings,
tint = MaterialTheme.colorScheme.primary,
contentDescription = stringResource(MR.strings.label_settings),
)
}
}
// <-- AM (BROWSE)
@Composable
fun SourceOptionsDialog(
source: Source,

View file

@ -0,0 +1,41 @@
package eu.kanade.presentation.browse.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.source.model.installedExtension
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
import exh.source.EH_SOURCE_ID
import exh.source.EXH_SOURCE_ID
import tachiyomi.domain.source.model.Source
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.source.local.LocalSource
// KMK -->
@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)
navigator.push(ExtensionDetailsScreen(source.installedExtension!!.pkgName))
}) {
Icon(
imageVector = Icons.Outlined.Settings,
tint = MaterialTheme.colorScheme.primary,
contentDescription = stringResource(MR.strings.label_settings),
)
}
}
// KMK <--