feat(incognito): add incognito mode for local sources (#903)
This commit is contained in:
parent
8a2b063cd9
commit
615c9fa259
5 changed files with 22 additions and 26 deletions
|
|
@ -2,7 +2,6 @@ package eu.kanade.presentation.browse.components
|
||||||
|
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ViewList
|
import androidx.compose.material.icons.automirrored.filled.ViewList
|
||||||
import androidx.compose.material.icons.automirrored.outlined.Help
|
|
||||||
import androidx.compose.material.icons.filled.ViewModule
|
import androidx.compose.material.icons.filled.ViewModule
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||||
|
|
@ -17,9 +16,7 @@ import eu.kanade.presentation.components.AppBarTitle
|
||||||
import eu.kanade.presentation.components.DropdownMenu
|
import eu.kanade.presentation.components.DropdownMenu
|
||||||
import eu.kanade.presentation.components.RadioMenuItem
|
import eu.kanade.presentation.components.RadioMenuItem
|
||||||
import eu.kanade.presentation.components.SearchToolbar
|
import eu.kanade.presentation.components.SearchToolbar
|
||||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import exh.source.anyIs
|
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import tachiyomi.domain.library.model.LibraryDisplayMode
|
import tachiyomi.domain.library.model.LibraryDisplayMode
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
|
|
@ -51,7 +48,6 @@ fun BrowseSourceToolbar(
|
||||||
// Avoid capturing unstable source in actions lambda
|
// Avoid capturing unstable source in actions lambda
|
||||||
val title = source?.name
|
val title = source?.name
|
||||||
val isLocalSource = source is LocalSource
|
val isLocalSource = source is LocalSource
|
||||||
val isConfigurableSource = source?.anyIs<ConfigurableSource>() == true
|
|
||||||
|
|
||||||
var selectingDisplayMode by remember { mutableStateOf(false) }
|
var selectingDisplayMode by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
|
|
@ -81,26 +77,6 @@ fun BrowseSourceToolbar(
|
||||||
}
|
}
|
||||||
// KMK -->
|
// KMK -->
|
||||||
add(bulkSelectionButton(isRunning, toggleSelectionMode))
|
add(bulkSelectionButton(isRunning, toggleSelectionMode))
|
||||||
// KMK <--
|
|
||||||
if (isLocalSource) {
|
|
||||||
if (isConfigurableSource && displayMode != null) {
|
|
||||||
add(
|
|
||||||
AppBar.OverflowAction(
|
|
||||||
title = stringResource(MR.strings.label_help),
|
|
||||||
onClick = onHelpClick,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
add(
|
|
||||||
AppBar.Action(
|
|
||||||
title = stringResource(MR.strings.label_help),
|
|
||||||
icon = Icons.AutoMirrored.Outlined.Help,
|
|
||||||
onClick = onHelpClick,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// KMK -->
|
|
||||||
add(
|
add(
|
||||||
AppBar.OverflowAction(
|
AppBar.OverflowAction(
|
||||||
title = stringResource(MR.strings.pref_incognito_mode),
|
title = stringResource(MR.strings.pref_incognito_mode),
|
||||||
|
|
@ -108,6 +84,14 @@ fun BrowseSourceToolbar(
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
// KMK <--
|
// KMK <--
|
||||||
|
if (isLocalSource) {
|
||||||
|
add(
|
||||||
|
AppBar.OverflowAction(
|
||||||
|
title = stringResource(MR.strings.label_help),
|
||||||
|
onClick = onHelpClick,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
add(
|
add(
|
||||||
AppBar.OverflowAction(
|
AppBar.OverflowAction(
|
||||||
title = stringResource(MR.strings.action_web_view),
|
title = stringResource(MR.strings.action_web_view),
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.source
|
||||||
import eu.kanade.domain.source.service.SourcePreferences
|
import eu.kanade.domain.source.service.SourcePreferences
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
import exh.source.EH_PACKAGE
|
import exh.source.EH_PACKAGE
|
||||||
|
import exh.source.LOCAL_SOURCE_PACKAGE
|
||||||
import exh.source.isEhBasedSource
|
import exh.source.isEhBasedSource
|
||||||
import tachiyomi.domain.source.model.StubSource
|
import tachiyomi.domain.source.model.StubSource
|
||||||
import tachiyomi.presentation.core.icons.FlagEmoji
|
import tachiyomi.presentation.core.icons.FlagEmoji
|
||||||
|
|
@ -83,7 +84,11 @@ fun Source.isLocalOrStub(): Boolean = isLocal() || this is StubSource
|
||||||
|
|
||||||
// KMK -->
|
// KMK -->
|
||||||
fun Source.isIncognitoModeEnabled(incognitoExtensions: Set<String>? = null): Boolean {
|
fun Source.isIncognitoModeEnabled(incognitoExtensions: Set<String>? = null): Boolean {
|
||||||
val extensionPackage = if (isEhBasedSource()) EH_PACKAGE else Injekt.get<ExtensionManager>().getExtensionPackage(id)
|
val extensionPackage = when {
|
||||||
|
isLocal() -> LOCAL_SOURCE_PACKAGE
|
||||||
|
isEhBasedSource() -> EH_PACKAGE
|
||||||
|
else -> Injekt.get<ExtensionManager>().getExtensionPackage(id)
|
||||||
|
}
|
||||||
return extensionPackage in (incognitoExtensions ?: Injekt.get<SourcePreferences>().incognitoExtensions().get())
|
return extensionPackage in (incognitoExtensions ?: Injekt.get<SourcePreferences>().incognitoExtensions().get())
|
||||||
}
|
}
|
||||||
// KMK <--
|
// KMK <--
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||||
import eu.kanade.tachiyomi.util.removeCovers
|
import eu.kanade.tachiyomi.util.removeCovers
|
||||||
import exh.metadata.metadata.RaisedSearchMetadata
|
import exh.metadata.metadata.RaisedSearchMetadata
|
||||||
import exh.source.EH_PACKAGE
|
import exh.source.EH_PACKAGE
|
||||||
|
import exh.source.LOCAL_SOURCE_PACKAGE
|
||||||
import exh.source.getMainSource
|
import exh.source.getMainSource
|
||||||
import exh.source.isEhBasedSource
|
import exh.source.isEhBasedSource
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
@ -81,6 +82,7 @@ import tachiyomi.domain.source.model.StubSource
|
||||||
import tachiyomi.domain.source.repository.SourcePagingSource
|
import tachiyomi.domain.source.repository.SourcePagingSource
|
||||||
import tachiyomi.domain.source.service.SourceManager
|
import tachiyomi.domain.source.service.SourceManager
|
||||||
import tachiyomi.i18n.sy.SYMR
|
import tachiyomi.i18n.sy.SYMR
|
||||||
|
import tachiyomi.source.local.isLocal
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import xyz.nulldev.ts.api.http.serializer.FilterSerializer
|
import xyz.nulldev.ts.api.http.serializer.FilterSerializer
|
||||||
|
|
@ -215,6 +217,7 @@ open class BrowseSourceScreenModel(
|
||||||
fun toggleIncognitoMode() {
|
fun toggleIncognitoMode() {
|
||||||
val packageName = when {
|
val packageName = when {
|
||||||
source is StubSource -> null
|
source is StubSource -> null
|
||||||
|
source.isLocal() -> LOCAL_SOURCE_PACKAGE
|
||||||
source.isEhBasedSource() -> EH_PACKAGE
|
source.isEhBasedSource() -> EH_PACKAGE
|
||||||
else -> extensionManager.getExtensionPackage(sourceId)
|
else -> extensionManager.getExtensionPackage(sourceId)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||||
import eu.kanade.tachiyomi.ui.browse.feed.MaxFeedItems
|
import eu.kanade.tachiyomi.ui.browse.feed.MaxFeedItems
|
||||||
import exh.source.EH_PACKAGE
|
import exh.source.EH_PACKAGE
|
||||||
|
import exh.source.LOCAL_SOURCE_PACKAGE
|
||||||
import exh.source.getMainSource
|
import exh.source.getMainSource
|
||||||
import exh.source.isEhBasedSource
|
import exh.source.isEhBasedSource
|
||||||
import exh.source.mangaDexSourceIds
|
import exh.source.mangaDexSourceIds
|
||||||
|
|
@ -60,6 +61,7 @@ import tachiyomi.domain.source.model.StubSource
|
||||||
import tachiyomi.domain.source.service.SourceManager
|
import tachiyomi.domain.source.service.SourceManager
|
||||||
import tachiyomi.i18n.kmk.KMR
|
import tachiyomi.i18n.kmk.KMR
|
||||||
import tachiyomi.i18n.sy.SYMR
|
import tachiyomi.i18n.sy.SYMR
|
||||||
|
import tachiyomi.source.local.isLocal
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import xyz.nulldev.ts.api.http.serializer.FilterSerializer
|
import xyz.nulldev.ts.api.http.serializer.FilterSerializer
|
||||||
|
|
@ -141,6 +143,7 @@ open class SourceFeedScreenModel(
|
||||||
fun toggleIncognitoMode() {
|
fun toggleIncognitoMode() {
|
||||||
val packageName = when {
|
val packageName = when {
|
||||||
source is StubSource -> null
|
source is StubSource -> null
|
||||||
|
source.isLocal() -> LOCAL_SOURCE_PACKAGE
|
||||||
source.isEhBasedSource() -> EH_PACKAGE
|
source.isEhBasedSource() -> EH_PACKAGE
|
||||||
else -> extensionManager.getExtensionPackage(sourceId)
|
else -> extensionManager.getExtensionPackage(sourceId)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ const val LEWD_SOURCE_SERIES = 6900L
|
||||||
const val EH_SOURCE_ID = 1713178126840476467 // LEWD_SOURCE_SERIES + 1
|
const val EH_SOURCE_ID = 1713178126840476467 // LEWD_SOURCE_SERIES + 1
|
||||||
const val EXH_SOURCE_ID = 6225928719850211219 // LEWD_SOURCE_SERIES + 2
|
const val EXH_SOURCE_ID = 6225928719850211219 // LEWD_SOURCE_SERIES + 2
|
||||||
const val EH_PACKAGE = "eu.kanade.tachiyomi.extension.all.ehentai"
|
const val EH_PACKAGE = "eu.kanade.tachiyomi.extension.all.ehentai"
|
||||||
|
const val LOCAL_SOURCE_PACKAGE = "tachiyomi.source.local"
|
||||||
// KMK <--
|
// KMK <--
|
||||||
|
|
||||||
const val NHENTAI_SOURCE_ID = 7309872737163460316L
|
const val NHENTAI_SOURCE_ID = 7309872737163460316L
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue