diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt index 41ab65f30..1bf72c8e9 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt @@ -2,22 +2,23 @@ package eu.kanade.domain.source.interactor import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.source.service.SourcePreferences -import eu.kanade.tachiyomi.extension.ExtensionManager +import eu.kanade.tachiyomi.source.isIncognitoModeEnabled import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged +import tachiyomi.domain.source.service.SourceManager class GetIncognitoState( private val basePreferences: BasePreferences, private val sourcePreferences: SourcePreferences, - private val extensionManager: ExtensionManager, + private val sourceManager: SourceManager, ) { fun await(sourceId: Long?): Boolean { if (basePreferences.incognitoMode().get()) return true if (sourceId == null) return false - val extensionPackage = extensionManager.getExtensionPackage(sourceId) ?: return false - - return extensionPackage in sourcePreferences.incognitoExtensions().get() + // KMK --> + return sourceManager.get(sourceId)?.isIncognitoModeEnabled() == true + // KMK <-- } fun subscribe(sourceId: Long?): Flow { @@ -26,9 +27,10 @@ class GetIncognitoState( return combine( basePreferences.incognitoMode().changes(), sourcePreferences.incognitoExtensions().changes(), - extensionManager.getExtensionPackageAsFlow(sourceId), - ) { incognito, incognitoExtensions, extensionPackage -> - incognito || (extensionPackage in incognitoExtensions) + ) { incognito, incognitoExtensions -> + // KMK --> + incognito || sourceManager.get(sourceId)?.isIncognitoModeEnabled(incognitoExtensions) == true + // KMK <-- } .distinctUntilChanged() } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt index f7e43a89a..6e07ee818 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties -import androidx.core.content.ContextCompat.startActivity +import eu.kanade.domain.source.interactor.ToggleIncognito import eu.kanade.presentation.library.components.SyncFavoritesWarningDialog import eu.kanade.presentation.more.settings.Preference import eu.kanade.tachiyomi.ui.webview.WebViewActivity @@ -52,6 +52,7 @@ import exh.eh.EHentaiUpdateWorker import exh.eh.EHentaiUpdateWorkerConstants import exh.eh.EHentaiUpdaterStats import exh.metadata.metadata.EHentaiSearchMetadata +import exh.source.EH_PACKAGE import exh.ui.login.EhLoginActivity import exh.util.nullIfBlank import kotlinx.collections.immutable.persistentListOf @@ -139,6 +140,14 @@ object SettingsEhScreen : SearchableSettings { ConfigureExhDialog(run = runConfigureDialog, onRunning = { runConfigureDialog = false }) return listOf( + // KMK --> + Preference.PreferenceGroup( + stringResource(MR.strings.source_settings), + preferenceItems = persistentListOf( + ehIncognitoMode(unsortedPreferences), + ), + ), + // KMK <-- Preference.PreferenceGroup( stringResource(SYMR.strings.ehentai_prefs_account_settings), preferenceItems = persistentListOf( @@ -180,6 +189,24 @@ object SettingsEhScreen : SearchableSettings { ) } + // KMK --> + @Composable + fun ehIncognitoMode( + unsortedPreferences: UnsortedPreferences, + ): Preference.PreferenceItem.SwitchPreference { + return Preference.PreferenceItem.SwitchPreference( + preference = unsortedPreferences.ehIncognitoMode(), + title = stringResource(MR.strings.pref_incognito_mode), + subtitle = stringResource(MR.strings.pref_incognito_mode_summary), + onValueChanged = { newVal -> + val toggleIncognito = Injekt.get() + toggleIncognito.await(EH_PACKAGE, newVal) + newVal + }, + ) + } + // KMK <-- + @Composable fun getLoginPreference( unsortedPreferences: UnsortedPreferences, @@ -275,14 +302,12 @@ object SettingsEhScreen : SearchableSettings { subtitle = stringResource(SYMR.strings.watched_tags_summary), enabled = exhentaiEnabled, onClick = { - startActivity( - context, + context.startActivity( WebViewActivity.newIntent( context, url = "https://exhentai.org/mytags", title = context.stringResource(SYMR.strings.watched_tags_exh), ), - null, ) }, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt index 49c5f42b4..01915d5ea 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt @@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.source import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.extension.ExtensionManager +import exh.source.EH_PACKAGE +import exh.source.isEhBasedSource import tachiyomi.domain.source.model.StubSource import tachiyomi.presentation.core.icons.FlagEmoji import tachiyomi.source.local.isLocal @@ -80,8 +82,8 @@ private fun getMergedSourcesString( fun Source.isLocalOrStub(): Boolean = isLocal() || this is StubSource // KMK --> -fun Source.isIncognitoModeEnabled(): Boolean { - val extensionPackage = Injekt.get().getExtensionPackage(id) - return extensionPackage in Injekt.get().incognitoExtensions().get() +fun Source.isIncognitoModeEnabled(incognitoExtensions: Set? = null): Boolean { + val extensionPackage = if (isEhBasedSource()) EH_PACKAGE else Injekt.get().getExtensionPackage(id) + return extensionPackage in (incognitoExtensions ?: Injekt.get().incognitoExtensions().get()) } // KMK <-- diff --git a/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt b/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt index c17568554..1eba508a6 100644 --- a/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt @@ -36,6 +36,10 @@ class UnsortedPreferences( fun isHentaiEnabled() = preferenceStore.getBoolean("eh_is_hentai_enabled", false) + // KMK --> + fun ehIncognitoMode() = preferenceStore.getBoolean("eh_incognito_mode", false) + // KMK <-- + fun enableExhentai() = preferenceStore.getBoolean(Preference.privateKey("enable_exhentai"), false) fun imageQuality() = preferenceStore.getString("ehentai_quality", "auto") diff --git a/source-api/src/commonMain/kotlin/exh/source/SourceIds.kt b/source-api/src/commonMain/kotlin/exh/source/SourceIds.kt index 966625f47..537411ebc 100644 --- a/source-api/src/commonMain/kotlin/exh/source/SourceIds.kt +++ b/source-api/src/commonMain/kotlin/exh/source/SourceIds.kt @@ -6,6 +6,7 @@ const val LEWD_SOURCE_SERIES = 6900L // KMK --> const val EH_SOURCE_ID = 1713178126840476467 // LEWD_SOURCE_SERIES + 1 const val EXH_SOURCE_ID = 6225928719850211219 // LEWD_SOURCE_SERIES + 2 +const val EH_PACKAGE = "eu.kanade.tachiyomi.extension.all.ehentai" // KMK <-- const val NHENTAI_SOURCE_ID = 7309872737163460316L