From b85fa5b9c9f37464e144c262e06b1d5d433872ba Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 15 May 2025 13:38:03 -0400 Subject: [PATCH] Minor refactors (cherry picked from commit 9b6c5effc9262f190c8758d2047708cd51549855) --- app/src/main/baseline-prof.txt | 21 ++- .../java/eu/kanade/domain/SYDomainModule.kt | 2 - .../source/service/SourcePreferences.kt | 27 ++++ .../browse/MigrateSourceScreen.kt | 4 +- .../eu/kanade/presentation/more/MoreScreen.kt | 6 +- .../settings/screen/ConfigureExhDialog.kt | 10 +- .../settings/screen/SettingsAdvancedScreen.kt | 12 +- .../settings/screen/SettingsBrowseScreen.kt | 22 ++- .../more/settings/screen/SettingsEhScreen.kt | 150 +++++++++--------- .../settings/screen/SettingsLibraryScreen.kt | 22 --- .../settings/screen/SettingsMangadexScreen.kt | 15 +- .../data/library/LibraryUpdateJob.kt | 4 +- .../tachiyomi/data/track/mdlist/MdList.kt | 4 +- .../data/updater/AppUpdateChecker.kt | 6 +- .../data/updater/AppUpdateDownloadJob.kt | 8 +- .../kanade/tachiyomi/di/SYPreferenceModule.kt | 4 +- .../tachiyomi/extension/ExtensionManager.kt | 4 +- .../tachiyomi/extension/api/ExtensionApi.kt | 4 +- .../tachiyomi/source/AndroidSourceManager.kt | 12 +- .../tachiyomi/source/online/all/EHentai.kt | 26 +-- .../design/MigrationBottomSheetDialog.kt | 4 +- .../design/PreMigrationScreenModel.kt | 6 +- .../process/MigrationListScreenModel.kt | 14 +- .../migration/manga/MigrateMangaScreen.kt | 8 +- .../browse/migration/search/MigrateDialog.kt | 16 +- .../source/browse/BrowseSourceScreen.kt | 4 +- .../source/browse/BrowseSourceScreenModel.kt | 6 +- .../ui/browse/source/feed/SourceFeedScreen.kt | 4 +- .../ui/library/LibraryScreenModel.kt | 14 +- .../kanade/tachiyomi/ui/library/LibraryTab.kt | 4 +- .../LibraryUpdateErrorScreen.kt | 6 +- .../kanade/tachiyomi/ui/main/MainActivity.kt | 8 +- .../kanade/tachiyomi/ui/manga/MangaScreen.kt | 7 +- .../main/java/exh/eh/EHentaiUpdateHelper.kt | 6 +- .../main/java/exh/eh/EHentaiUpdateWorker.kt | 25 +-- .../java/exh/favorites/FavoritesSyncHelper.kt | 14 +- .../main/java/exh/md/MangaDexLoginActivity.kt | 10 +- app/src/main/java/exh/md/utils/MdUtil.kt | 6 +- .../RecommendationSearchBottomSheetDialog.kt | 4 +- .../recs/batch/RecommendationSearchHelper.kt | 8 +- .../main/java/exh/uconfig/EHConfigurator.kt | 16 +- .../main/java/exh/uconfig/EhUConfigBuilder.kt | 20 +-- .../exh/ui/batchadd/BatchAddScreenModel.kt | 10 +- .../main/java/exh/ui/login/EhLoginActivity.kt | 21 ++- .../migrations/IntegratedHentaiMigration.kt | 4 +- .../list_item_selector_background.xml | 19 --- .../main/res/layout/migration_source_item.xml | 82 +++++----- .../data/history/HistoryRepositoryImpl.kt | 4 - .../source/ExhPreferences.kt} | 52 ++---- .../history/interactor/GetHistoryByMangaId.kt | 13 -- .../history/repository/HistoryRepository.kt | 2 - 51 files changed, 367 insertions(+), 413 deletions(-) delete mode 100644 app/src/main/res/drawable/list_item_selector_background.xml rename domain/src/main/java/{tachiyomi/domain/UnsortedPreferences.kt => exh/source/ExhPreferences.kt} (63%) delete mode 100644 domain/src/main/java/tachiyomi/domain/history/interactor/GetHistoryByMangaId.kt diff --git a/app/src/main/baseline-prof.txt b/app/src/main/baseline-prof.txt index c78d85821..d6333726b 100644 --- a/app/src/main/baseline-prof.txt +++ b/app/src/main/baseline-prof.txt @@ -14617,8 +14617,8 @@ Leu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt; HSPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt;->ConfigureExhDialog(ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V HPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt;->ConfigureExhDialog(ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V Leu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1; -HSPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->(ZLtachiyomi/domain/UnsortedPreferences;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V -PLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->(ZLtachiyomi/domain/UnsortedPreferences;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->(ZLtachiyomi/domain/ExhPreferences;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +PLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->(ZLtachiyomi/domain/ExhPreferences;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V HSPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; PLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; HSPLeu/kanade/presentation/more/settings/screen/ConfigureExhDialogKt$ConfigureExhDialog$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; @@ -32652,13 +32652,13 @@ HSPLtachiyomi/data/updates/UpdatesRepositoryImpl$subscribeWithRead$1;->(J) PLtachiyomi/data/updates/UpdatesRepositoryImpl$subscribeWithRead$1;->(J)V HSPLtachiyomi/data/updates/UpdatesRepositoryImpl$subscribeWithRead$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLtachiyomi/data/updates/UpdatesRepositoryImpl$subscribeWithRead$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -Ltachiyomi/domain/UnsortedPreferences; -HSPLtachiyomi/domain/UnsortedPreferences;->(Ltachiyomi/core/preference/PreferenceStore;)V -PLtachiyomi/domain/UnsortedPreferences;->(Ltachiyomi/core/preference/PreferenceStore;)V -HSPLtachiyomi/domain/UnsortedPreferences;->enableExhentai()Ltachiyomi/core/preference/Preference; -PLtachiyomi/domain/UnsortedPreferences;->enableExhentai()Ltachiyomi/core/preference/Preference; -HSPLtachiyomi/domain/UnsortedPreferences;->extensionRepos()Ltachiyomi/core/preference/Preference; -PLtachiyomi/domain/UnsortedPreferences;->extensionRepos()Ltachiyomi/core/preference/Preference; +Ltachiyomi/domain/ExhPreferences; +HSPLtachiyomi/domain/ExhPreferences;->(Ltachiyomi/core/preference/PreferenceStore;)V +PLtachiyomi/domain/ExhPreferences;->(Ltachiyomi/core/preference/PreferenceStore;)V +HSPLtachiyomi/domain/ExhPreferences;->enableExhentai()Ltachiyomi/core/preference/Preference; +PLtachiyomi/domain/ExhPreferences;->enableExhentai()Ltachiyomi/core/preference/Preference; +HSPLtachiyomi/domain/ExhPreferences;->extensionRepos()Ltachiyomi/core/preference/Preference; +PLtachiyomi/domain/ExhPreferences;->extensionRepos()Ltachiyomi/core/preference/Preference; Ltachiyomi/domain/backup/service/BackupPreferences; HSPLtachiyomi/domain/backup/service/BackupPreferences;->(Ltachiyomi/core/provider/FolderProvider;Ltachiyomi/core/preference/PreferenceStore;)V PLtachiyomi/domain/backup/service/BackupPreferences;->(Ltachiyomi/core/provider/FolderProvider;Ltachiyomi/core/preference/PreferenceStore;)V @@ -32721,7 +32721,6 @@ PLtachiyomi/domain/download/service/DownloadPreferences;->downloadsDirectory()Lt Ltachiyomi/domain/history/interactor/GetHistory; HSPLtachiyomi/domain/history/interactor/GetHistory;->(Ltachiyomi/domain/history/repository/HistoryRepository;)V PLtachiyomi/domain/history/interactor/GetHistory;->(Ltachiyomi/domain/history/repository/HistoryRepository;)V -Ltachiyomi/domain/history/interactor/GetHistoryByMangaId; Ltachiyomi/domain/history/interactor/GetNextChapters; HSPLtachiyomi/domain/history/interactor/GetNextChapters;->(Ltachiyomi/domain/chapter/interactor/GetChapterByMangaId;Ltachiyomi/domain/chapter/interactor/GetMergedChapterByMangaId;Ltachiyomi/domain/manga/interactor/GetManga;Ltachiyomi/domain/history/repository/HistoryRepository;)V PLtachiyomi/domain/history/interactor/GetNextChapters;->(Ltachiyomi/domain/chapter/interactor/GetChapterByMangaId;Ltachiyomi/domain/chapter/interactor/GetMergedChapterByMangaId;Ltachiyomi/domain/manga/interactor/GetManga;Ltachiyomi/domain/history/repository/HistoryRepository;)V @@ -33492,4 +33491,4 @@ PLuy/kohesive/injekt/registry/default/DefaultRegistrar$addSingletonFactory$1$$sp Luy/kohesive/injekt/registry/default/DefaultRegistrar$threadedValues$1; HSPLuy/kohesive/injekt/registry/default/DefaultRegistrar$threadedValues$1;->()V PLuy/kohesive/injekt/registry/default/DefaultRegistrar$threadedValues$1;->()V -Lxyz/nulldev/ts/api/http/serializer/FilterSerializer; \ No newline at end of file +Lxyz/nulldev/ts/api/http/serializer/FilterSerializer; diff --git a/app/src/main/java/eu/kanade/domain/SYDomainModule.kt b/app/src/main/java/eu/kanade/domain/SYDomainModule.kt index 62c66f111..ba2232acb 100644 --- a/app/src/main/java/eu/kanade/domain/SYDomainModule.kt +++ b/app/src/main/java/eu/kanade/domain/SYDomainModule.kt @@ -26,7 +26,6 @@ import tachiyomi.data.source.SavedSearchRepositoryImpl import tachiyomi.domain.chapter.interactor.DeleteChapters import tachiyomi.domain.chapter.interactor.GetChapterByUrl import tachiyomi.domain.chapter.interactor.GetMergedChaptersByMangaId -import tachiyomi.domain.history.interactor.GetHistoryByMangaId import tachiyomi.domain.manga.interactor.DeleteByMergeId import tachiyomi.domain.manga.interactor.DeleteFavoriteEntries import tachiyomi.domain.manga.interactor.DeleteMangaById @@ -91,7 +90,6 @@ class SYDomainModule : InjektModule { addFactory { DeleteChapters(get()) } addFactory { DeleteMangaById(get()) } addFactory { FilterSerializer() } - addFactory { GetHistoryByMangaId(get()) } addFactory { GetChapterByUrl(get()) } addFactory { GetSourceCategories(get()) } addFactory { CreateSourceCategory(get()) } diff --git a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt index f7cce69a9..1e0fda823 100644 --- a/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt +++ b/app/src/main/java/eu/kanade/domain/source/service/SourcePreferences.kt @@ -108,6 +108,33 @@ class SourcePreferences( BANDWIDTH_HERO, WSRV_NL, } + + fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE) + + fun defaultMangaOrder() = preferenceStore.getString("default_manga_order", "") + + fun migrationSources() = preferenceStore.getString("migrate_sources", "") + + fun smartMigration() = preferenceStore.getBoolean("smart_migrate", false) + + fun useSourceWithMost() = preferenceStore.getBoolean("use_source_with_most", false) + + fun skipPreMigration() = preferenceStore.getBoolean(Preference.appStateKey("skip_pre_migration"), false) + + fun hideNotFoundMigration() = preferenceStore.getBoolean("hide_not_found_migration", false) + + fun showOnlyUpdatesMigration() = preferenceStore.getBoolean("show_only_updates_migration", false) + + fun allowLocalSourceHiddenFolders() = preferenceStore.getBoolean("allow_local_source_hidden_folders", false) + + fun preferredMangaDexId() = preferenceStore.getString("preferred_mangaDex_id", "0") + + fun mangadexSyncToLibraryIndexes() = preferenceStore.getStringSet( + "pref_mangadex_sync_to_library_indexes", + emptySet(), + ) + + fun recommendationSearchFlags() = preferenceStore.getInt("rec_search_flags", Int.MAX_VALUE) // SY <-- // KMK --> diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt index b89a39ec7..1d79a6295 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt @@ -41,9 +41,9 @@ import eu.kanade.presentation.components.SOURCE_SEARCH_BOX_HEIGHT import eu.kanade.presentation.util.animateItemFastScroll import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceScreenModel import eu.kanade.tachiyomi.util.system.copyToClipboard +import exh.source.ExhPreferences import exh.source.hentaiSourceIds import kotlinx.collections.immutable.ImmutableList -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.model.Source import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR @@ -120,7 +120,7 @@ private fun MigrateSourceList( // KMK --> val lazyListState = rememberLazyListState() var filterObsoleteSource by rememberSaveable { mutableStateOf(false) } - val isHentaiEnabled = remember { Injekt.get().isHentaiEnabled().get() } + val isHentaiEnabled = remember { Injekt.get().isHentaiEnabled().get() } BackHandler(enabled = !state.searchQuery.isNullOrBlank()) { onChangeSearchQuery("") diff --git a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt index 7dc36a50e..97474b3a7 100644 --- a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt @@ -43,8 +43,8 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.more.DownloadQueueState import eu.kanade.tachiyomi.util.system.openInBrowser import exh.pref.DelegateSourcePreferences +import exh.source.ExhPreferences import tachiyomi.core.common.Constants -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR import tachiyomi.i18n.sy.SYMR @@ -83,7 +83,7 @@ fun MoreScreen( ) { val uriHandler = LocalUriHandler.current // SY --> - val unsortedPreferences = remember { Injekt.get() } + val exhPreferences = remember { Injekt.get() } val delegateSourcePreferences = remember { Injekt.get() } // SY <-- @@ -202,7 +202,7 @@ fun MoreScreen( ) } // SY --> - if (unsortedPreferences.isHentaiEnabled().get() || delegateSourcePreferences.delegateSources().get()) { + if (exhPreferences.isHentaiEnabled().get() || delegateSourcePreferences.delegateSources().get()) { item { TextPreferenceWidget( title = stringResource(SYMR.strings.eh_batch_add), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/ConfigureExhDialog.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/ConfigureExhDialog.kt index bee4ee98e..0ab22f6cf 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/ConfigureExhDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/ConfigureExhDialog.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.window.DialogProperties import eu.kanade.tachiyomi.util.system.toast import exh.log.xLogE +import exh.source.ExhPreferences import exh.uconfig.EHConfigurator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.delay import kotlinx.coroutines.withContext import tachiyomi.core.common.util.lang.launchUI -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.sy.SYMR import tachiyomi.presentation.core.i18n.stringResource @@ -29,8 +29,8 @@ import kotlin.time.Duration.Companion.seconds @Composable fun ConfigureExhDialog(run: Boolean, onRunning: () -> Unit) { - val unsortedPreferences = remember { - Injekt.get() + val exhPreferences = remember { + Injekt.get() } var warnDialogOpen by remember { mutableStateOf(false) } var configureDialogOpen by remember { mutableStateOf(false) } @@ -38,7 +38,7 @@ fun ConfigureExhDialog(run: Boolean, onRunning: () -> Unit) { LaunchedEffect(run) { if (run) { - if (unsortedPreferences.exhShowSettingsUploadWarning().get()) { + if (exhPreferences.exhShowSettingsUploadWarning().get()) { warnDialogOpen = true } else { configureDialogOpen = true @@ -57,7 +57,7 @@ fun ConfigureExhDialog(run: Boolean, onRunning: () -> Unit) { confirmButton = { TextButton( onClick = { - unsortedPreferences.exhShowSettingsUploadWarning().set(false) + exhPreferences.exhShowSettingsUploadWarning().set(false) configureDialogOpen = true warnDialogOpen = false }, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt index 4015f6cf4..32d8f98b6 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt @@ -72,6 +72,7 @@ import eu.kanade.tachiyomi.util.system.toast import exh.debug.SettingsDebugScreen import exh.log.EHLogLevel import exh.pref.DelegateSourcePreferences +import exh.source.ExhPreferences import exh.util.toAnnotatedString import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf @@ -86,7 +87,6 @@ import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.ImageUtil import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.manga.interactor.GetAllManga @@ -120,7 +120,7 @@ object SettingsAdvancedScreen : SearchableSettings { val basePreferences = remember { Injekt.get() } val networkPreferences = remember { Injekt.get() } val libraryPreferences = remember { Injekt.get() } - val unsortedPreferences = remember { Injekt.get() } + val exhPreferences = remember { Injekt.get() } return listOf( Preference.PreferenceItem.TextPreference( @@ -160,7 +160,7 @@ object SettingsAdvancedScreen : SearchableSettings { ), // KMK --> Preference.PreferenceItem.MultiSelectListPreference( - preference = unsortedPreferences.appShouldAutoUpdate(), + preference = exhPreferences.appShouldAutoUpdate(), entries = persistentMapOf( AppUpdatePolicy.DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED to stringResource(MR.strings.network_not_metered), @@ -736,14 +736,14 @@ object SettingsAdvancedScreen : SearchableSettings { val context = LocalContext.current val navigator = LocalNavigator.currentOrThrow val sourcePreferences = remember { Injekt.get() } - val unsortedPreferences = remember { Injekt.get() } + val exhPreferences = remember { Injekt.get() } val delegateSourcePreferences = remember { Injekt.get() } val securityPreferences = remember { Injekt.get() } return Preference.PreferenceGroup( title = stringResource(SYMR.strings.developer_tools), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.isHentaiEnabled(), + preference = exhPreferences.isHentaiEnabled(), title = stringResource(SYMR.strings.toggle_hentai_features), subtitle = stringResource(SYMR.strings.toggle_hentai_features_summary), onValueChanged = { @@ -769,7 +769,7 @@ object SettingsAdvancedScreen : SearchableSettings { ), ), Preference.PreferenceItem.ListPreference( - preference = unsortedPreferences.logLevel(), + preference = exhPreferences.logLevel(), entries = EHLogLevel.entries.mapIndexed { index, ehLogLevel -> index to "${context.stringResource(ehLogLevel.nameRes)} (${ context.stringResource(ehLogLevel.description) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt index 30b08a9a7..db932297e 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt @@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate import kotlinx.collections.immutable.persistentListOf import mihon.domain.extensionrepo.interactor.GetExtensionRepoCount import tachiyomi.core.common.i18n.stringResource -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR import tachiyomi.i18n.sy.SYMR @@ -51,7 +50,6 @@ object SettingsBrowseScreen : SearchableSettings { val scope = rememberCoroutineScope() val hideFeedTab by remember { Injekt.get().hideFeedTab().asState(scope) } val uiPreferences = remember { Injekt.get() } - val unsortedPreferences = remember { Injekt.get() } // SY <-- // KMK --> val relatedMangasInOverflow by uiPreferences.expandRelatedMangas().collectAsState() @@ -107,7 +105,7 @@ object SettingsBrowseScreen : SearchableSettings { subtitle = stringResource(SYMR.strings.pref_source_navigation_summery), ), Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.allowLocalSourceHiddenFolders(), + preference = sourcePreferences.allowLocalSourceHiddenFolders(), title = stringResource(SYMR.strings.pref_local_source_hidden_folders), subtitle = stringResource(SYMR.strings.pref_local_source_hidden_folders_summery), ), @@ -167,6 +165,24 @@ object SettingsBrowseScreen : SearchableSettings { Preference.PreferenceItem.InfoPreference(stringResource(MR.strings.parental_controls_info)), ), ), + getMigrationCategory(sourcePreferences), + ) + } + + @Composable + fun getMigrationCategory(sourcePreferences: SourcePreferences): Preference.PreferenceGroup { + val skipPreMigration by sourcePreferences.skipPreMigration().collectAsState() + val migrationSources by sourcePreferences.migrationSources().collectAsState() + return Preference.PreferenceGroup( + stringResource(SYMR.strings.migration), + enabled = skipPreMigration || migrationSources.isNotEmpty(), + preferenceItems = persistentListOf( + Preference.PreferenceItem.SwitchPreference( + preference = sourcePreferences.skipPreMigration(), + title = stringResource(SYMR.strings.skip_pre_migration), + subtitle = stringResource(SYMR.strings.pref_skip_pre_migration_summary), + ), + ), ) } } 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 6e07ee818..aa284fc68 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 @@ -53,6 +53,7 @@ import exh.eh.EHentaiUpdateWorkerConstants import exh.eh.EHentaiUpdaterStats import exh.metadata.metadata.EHentaiSearchMetadata import exh.source.EH_PACKAGE +import exh.source.ExhPreferences import exh.ui.login.EhLoginActivity import exh.util.nullIfBlank import kotlinx.collections.immutable.persistentListOf @@ -65,7 +66,6 @@ import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_CHARGING import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_ONLY_ON_WIFI import tachiyomi.domain.manga.interactor.DeleteFavoriteEntries @@ -91,22 +91,22 @@ object SettingsEhScreen : SearchableSettings { @Composable override fun getTitleRes() = SYMR.strings.pref_category_eh - override fun isEnabled(): Boolean = Injekt.get().isHentaiEnabled().get() + override fun isEnabled(): Boolean = Injekt.get().isHentaiEnabled().get() @Composable fun Reconfigure( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, openWarnConfigureDialogController: () -> Unit, ) { var initialLoadGuard by remember { mutableStateOf(false) } - val useHentaiAtHome by unsortedPreferences.useHentaiAtHome().collectAsState() - val useJapaneseTitle by unsortedPreferences.useJapaneseTitle().collectAsState() - val useOriginalImages by unsortedPreferences.exhUseOriginalImages().collectAsState() - val ehTagFilterValue by unsortedPreferences.ehTagFilterValue().collectAsState() - val ehTagWatchingValue by unsortedPreferences.ehTagWatchingValue().collectAsState() - val settingsLanguages by unsortedPreferences.exhSettingsLanguages().collectAsState() - val enabledCategories by unsortedPreferences.exhEnabledCategories().collectAsState() - val imageQuality by unsortedPreferences.imageQuality().collectAsState() + val useHentaiAtHome by exhPreferences.useHentaiAtHome().collectAsState() + val useJapaneseTitle by exhPreferences.useJapaneseTitle().collectAsState() + val useOriginalImages by exhPreferences.exhUseOriginalImages().collectAsState() + val ehTagFilterValue by exhPreferences.ehTagFilterValue().collectAsState() + val ehTagWatchingValue by exhPreferences.ehTagWatchingValue().collectAsState() + val settingsLanguages by exhPreferences.exhSettingsLanguages().collectAsState() + val enabledCategories by exhPreferences.exhEnabledCategories().collectAsState() + val imageQuality by exhPreferences.imageQuality().collectAsState() DisposableEffect( useHentaiAtHome, useJapaneseTitle, @@ -127,15 +127,15 @@ object SettingsEhScreen : SearchableSettings { @Composable override fun getPreferences(): List { - val unsortedPreferences: UnsortedPreferences = remember { Injekt.get() } + val exhPreferences: ExhPreferences = remember { Injekt.get() } val getFlatMetadataById: GetFlatMetadataById = remember { Injekt.get() } val deleteFavoriteEntries: DeleteFavoriteEntries = remember { Injekt.get() } val getExhFavoriteMangaWithMetadata: GetExhFavoriteMangaWithMetadata = remember { Injekt.get() } - val exhentaiEnabled by unsortedPreferences.enableExhentai().collectAsState() + val exhentaiEnabled by exhPreferences.enableExhentai().collectAsState() var runConfigureDialog by remember { mutableStateOf(false) } val openWarnConfigureDialogController = { runConfigureDialog = true } - Reconfigure(unsortedPreferences, openWarnConfigureDialogController) + Reconfigure(exhPreferences, openWarnConfigureDialogController) ConfigureExhDialog(run = runConfigureDialog, onRunning = { runConfigureDialog = false }) @@ -144,43 +144,43 @@ object SettingsEhScreen : SearchableSettings { Preference.PreferenceGroup( stringResource(MR.strings.source_settings), preferenceItems = persistentListOf( - ehIncognitoMode(unsortedPreferences), + ehIncognitoMode(exhPreferences), ), ), // KMK <-- Preference.PreferenceGroup( stringResource(SYMR.strings.ehentai_prefs_account_settings), preferenceItems = persistentListOf( - getLoginPreference(unsortedPreferences, openWarnConfigureDialogController), - useHentaiAtHome(exhentaiEnabled, unsortedPreferences), - useJapaneseTitle(exhentaiEnabled, unsortedPreferences), - useOriginalImages(exhentaiEnabled, unsortedPreferences), + getLoginPreference(exhPreferences, openWarnConfigureDialogController), + useHentaiAtHome(exhentaiEnabled, exhPreferences), + useJapaneseTitle(exhentaiEnabled, exhPreferences), + useOriginalImages(exhentaiEnabled, exhPreferences), watchedTags(exhentaiEnabled), - tagFilterThreshold(exhentaiEnabled, unsortedPreferences), - tagWatchingThreshold(exhentaiEnabled, unsortedPreferences), - settingsLanguages(exhentaiEnabled, unsortedPreferences), - enabledCategories(exhentaiEnabled, unsortedPreferences), - watchedListDefaultState(exhentaiEnabled, unsortedPreferences), - imageQuality(exhentaiEnabled, unsortedPreferences), - enhancedEhentaiView(unsortedPreferences), + tagFilterThreshold(exhentaiEnabled, exhPreferences), + tagWatchingThreshold(exhentaiEnabled, exhPreferences), + settingsLanguages(exhentaiEnabled, exhPreferences), + enabledCategories(exhentaiEnabled, exhPreferences), + watchedListDefaultState(exhentaiEnabled, exhPreferences), + imageQuality(exhentaiEnabled, exhPreferences), + enhancedEhentaiView(exhPreferences), ), ), Preference.PreferenceGroup( stringResource(SYMR.strings.favorites_sync), preferenceItems = persistentListOf( - readOnlySync(unsortedPreferences), + readOnlySync(exhPreferences), syncFavoriteNotes(), - lenientSync(unsortedPreferences), + lenientSync(exhPreferences), forceSyncReset(deleteFavoriteEntries), ), ), Preference.PreferenceGroup( stringResource(SYMR.strings.gallery_update_checker), preferenceItems = persistentListOf( - updateCheckerFrequency(unsortedPreferences), - autoUpdateRequirements(unsortedPreferences), + updateCheckerFrequency(exhPreferences), + autoUpdateRequirements(exhPreferences), updaterStatistics( - unsortedPreferences, + exhPreferences, getExhFavoriteMangaWithMetadata, getFlatMetadataById, ), @@ -192,10 +192,10 @@ object SettingsEhScreen : SearchableSettings { // KMK --> @Composable fun ehIncognitoMode( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.ehIncognitoMode(), + preference = exhPreferences.ehIncognitoMode(), title = stringResource(MR.strings.pref_incognito_mode), subtitle = stringResource(MR.strings.pref_incognito_mode_summary), onValueChanged = { newVal -> @@ -209,7 +209,7 @@ object SettingsEhScreen : SearchableSettings { @Composable fun getLoginPreference( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, openWarnConfigureDialogController: () -> Unit, ): Preference.PreferenceItem.SwitchPreference { val activityResultContract = @@ -220,9 +220,9 @@ object SettingsEhScreen : SearchableSettings { } } val context = LocalContext.current - val value by unsortedPreferences.enableExhentai().collectAsState() + val value by exhPreferences.enableExhentai().collectAsState() return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.enableExhentai(), + preference = exhPreferences.enableExhentai(), title = stringResource(SYMR.strings.enable_exhentai), subtitle = if (!value) { stringResource(SYMR.strings.requires_login) @@ -231,7 +231,7 @@ object SettingsEhScreen : SearchableSettings { }, onValueChanged = { newVal -> if (!newVal) { - unsortedPreferences.enableExhentai().set(false) + exhPreferences.enableExhentai().set(false) true } else { activityResultContract.launch(EhLoginActivity.newIntent(context)) @@ -244,10 +244,10 @@ object SettingsEhScreen : SearchableSettings { @Composable fun useHentaiAtHome( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - preference = unsortedPreferences.useHentaiAtHome(), + preference = exhPreferences.useHentaiAtHome(), entries = persistentMapOf( 0 to stringResource(SYMR.strings.use_hentai_at_home_option_1), 1 to stringResource(SYMR.strings.use_hentai_at_home_option_2), @@ -261,11 +261,11 @@ object SettingsEhScreen : SearchableSettings { @Composable fun useJapaneseTitle( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.SwitchPreference { - val value by unsortedPreferences.useJapaneseTitle().collectAsState() + val value by exhPreferences.useJapaneseTitle().collectAsState() return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.useJapaneseTitle(), + preference = exhPreferences.useJapaneseTitle(), title = stringResource(SYMR.strings.show_japanese_titles), subtitle = if (value) { stringResource(SYMR.strings.show_japanese_titles_option_1) @@ -279,11 +279,11 @@ object SettingsEhScreen : SearchableSettings { @Composable fun useOriginalImages( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.SwitchPreference { - val value by unsortedPreferences.exhUseOriginalImages().collectAsState() + val value by exhPreferences.exhUseOriginalImages().collectAsState() return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.exhUseOriginalImages(), + preference = exhPreferences.exhUseOriginalImages(), title = stringResource(SYMR.strings.use_original_images), subtitle = if (value) { stringResource(SYMR.strings.use_original_images_on) @@ -379,9 +379,9 @@ object SettingsEhScreen : SearchableSettings { @Composable fun tagFilterThreshold( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.TextPreference { - val value by unsortedPreferences.ehTagFilterValue().collectAsState() + val value by exhPreferences.ehTagFilterValue().collectAsState() var dialogOpen by remember { mutableStateOf(false) } if (dialogOpen) { TagThresholdDialog( @@ -392,7 +392,7 @@ object SettingsEhScreen : SearchableSettings { outsideRangeError = stringResource(SYMR.strings.tag_filtering_threshhold_error), onValueChange = { dialogOpen = false - unsortedPreferences.ehTagFilterValue().set(it) + exhPreferences.ehTagFilterValue().set(it) }, ) } @@ -409,9 +409,9 @@ object SettingsEhScreen : SearchableSettings { @Composable fun tagWatchingThreshold( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.TextPreference { - val value by unsortedPreferences.ehTagWatchingValue().collectAsState() + val value by exhPreferences.ehTagWatchingValue().collectAsState() var dialogOpen by remember { mutableStateOf(false) } if (dialogOpen) { TagThresholdDialog( @@ -422,7 +422,7 @@ object SettingsEhScreen : SearchableSettings { outsideRangeError = stringResource(SYMR.strings.tag_watching_threshhold_error), onValueChange = { dialogOpen = false - unsortedPreferences.ehTagWatchingValue().set(it) + exhPreferences.ehTagWatchingValue().set(it) }, ) } @@ -632,9 +632,9 @@ object SettingsEhScreen : SearchableSettings { @Composable fun settingsLanguages( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.TextPreference { - val value by unsortedPreferences.exhSettingsLanguages().collectAsState() + val value by exhPreferences.exhSettingsLanguages().collectAsState() var dialogOpen by remember { mutableStateOf(false) } if (dialogOpen) { LanguagesDialog( @@ -642,7 +642,7 @@ object SettingsEhScreen : SearchableSettings { initialValue = value, onValueChange = { dialogOpen = false - unsortedPreferences.exhSettingsLanguages().set(it) + exhPreferences.exhSettingsLanguages().set(it) }, ) } @@ -798,9 +798,9 @@ object SettingsEhScreen : SearchableSettings { @Composable fun enabledCategories( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.TextPreference { - val value by unsortedPreferences.exhEnabledCategories().collectAsState() + val value by exhPreferences.exhEnabledCategories().collectAsState() var dialogOpen by remember { mutableStateOf(false) } if (dialogOpen) { FrontPageCategoriesDialog( @@ -808,7 +808,7 @@ object SettingsEhScreen : SearchableSettings { initialValue = value, onValueChange = { dialogOpen = false - unsortedPreferences.exhEnabledCategories().set(it) + exhPreferences.exhEnabledCategories().set(it) }, ) } @@ -825,10 +825,10 @@ object SettingsEhScreen : SearchableSettings { @Composable fun watchedListDefaultState( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.exhWatchedListDefaultState(), + preference = exhPreferences.exhWatchedListDefaultState(), title = stringResource(SYMR.strings.watched_list_default), subtitle = stringResource(SYMR.strings.watched_list_state_summary), enabled = exhentaiEnabled, @@ -838,10 +838,10 @@ object SettingsEhScreen : SearchableSettings { @Composable fun imageQuality( exhentaiEnabled: Boolean, - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - preference = unsortedPreferences.imageQuality(), + preference = exhPreferences.imageQuality(), entries = persistentMapOf( "auto" to stringResource(SYMR.strings.eh_image_quality_auto), "ovrs_2400" to stringResource(SYMR.strings.eh_image_quality_2400), @@ -857,18 +857,18 @@ object SettingsEhScreen : SearchableSettings { } @Composable - fun enhancedEhentaiView(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { + fun enhancedEhentaiView(exhPreferences: ExhPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.enhancedEHentaiView(), + preference = exhPreferences.enhancedEHentaiView(), title = stringResource(SYMR.strings.pref_enhanced_e_hentai_view), subtitle = stringResource(SYMR.strings.pref_enhanced_e_hentai_view_summary), ) } @Composable - fun readOnlySync(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { + fun readOnlySync(exhPreferences: ExhPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.exhReadOnlySync(), + preference = exhPreferences.exhReadOnlySync(), title = stringResource(SYMR.strings.disable_favorites_uploading), subtitle = stringResource(SYMR.strings.disable_favorites_uploading_summary), ) @@ -891,9 +891,9 @@ object SettingsEhScreen : SearchableSettings { } @Composable - fun lenientSync(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { + fun lenientSync(exhPreferences: ExhPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.exhLenientSync(), + preference = exhPreferences.exhLenientSync(), title = stringResource(SYMR.strings.ignore_sync_errors), subtitle = stringResource(SYMR.strings.ignore_sync_errors_summary), ) @@ -963,12 +963,12 @@ object SettingsEhScreen : SearchableSettings { @Composable fun updateCheckerFrequency( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.ListPreference { - val value by unsortedPreferences.exhAutoUpdateFrequency().collectAsState() + val value by exhPreferences.exhAutoUpdateFrequency().collectAsState() val context = LocalContext.current return Preference.PreferenceItem.ListPreference( - preference = unsortedPreferences.exhAutoUpdateFrequency(), + preference = exhPreferences.exhAutoUpdateFrequency(), entries = persistentMapOf( 0 to stringResource(SYMR.strings.time_between_batches_never), 1 to stringResource(SYMR.strings.time_between_batches_1_hour), @@ -999,12 +999,12 @@ object SettingsEhScreen : SearchableSettings { @Composable fun autoUpdateRequirements( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, ): Preference.PreferenceItem.MultiSelectListPreference { - val value by unsortedPreferences.exhAutoUpdateRequirements().collectAsState() + val value by exhPreferences.exhAutoUpdateRequirements().collectAsState() val context = LocalContext.current return Preference.PreferenceItem.MultiSelectListPreference( - preference = unsortedPreferences.exhAutoUpdateRequirements(), + preference = exhPreferences.exhAutoUpdateRequirements(), entries = persistentMapOf( DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), DEVICE_CHARGING to stringResource(MR.strings.charging), @@ -1167,7 +1167,7 @@ object SettingsEhScreen : SearchableSettings { @Composable fun updaterStatistics( - unsortedPreferences: UnsortedPreferences, + exhPreferences: ExhPreferences, getExhFavoriteMangaWithMetadata: GetExhFavoriteMangaWithMetadata, getFlatMetadataById: GetFlatMetadataById, ): Preference.PreferenceItem.TextPreference { @@ -1178,7 +1178,7 @@ object SettingsEhScreen : SearchableSettings { value = withIOContext { try { val stats = - unsortedPreferences.exhAutoUpdateStats().get().nullIfBlank()?.let { + exhPreferences.exhAutoUpdateStats().get().nullIfBlank()?.let { Json.decodeFromString(it) } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index 22d48fe72..02362b1a1 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -25,7 +25,6 @@ import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.launch -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.ResetCategoryFlags import tachiyomi.domain.category.model.Category @@ -62,9 +61,6 @@ object SettingsLibraryScreen : SearchableSettings { val getCategories = remember { Injekt.get() } val libraryPreferences = remember { Injekt.get() } val allCategories by getCategories.subscribe().collectAsState(initial = emptyList()) - // SY --> - val unsortedPreferences = remember { Injekt.get() } - // SY <-- return listOf( getCategoriesGroup(LocalNavigator.currentOrThrow, allCategories, libraryPreferences), @@ -72,7 +68,6 @@ object SettingsLibraryScreen : SearchableSettings { getBehaviorGroup(libraryPreferences), // SY --> getSortingCategory(LocalNavigator.currentOrThrow, libraryPreferences), - getMigrationCategory(unsortedPreferences), // SY <-- ) } @@ -319,22 +314,5 @@ object SettingsLibraryScreen : SearchableSettings { ), ) } - - @Composable - fun getMigrationCategory(unsortedPreferences: UnsortedPreferences): Preference.PreferenceGroup { - val skipPreMigration by unsortedPreferences.skipPreMigration().collectAsState() - val migrationSources by unsortedPreferences.migrationSources().collectAsState() - return Preference.PreferenceGroup( - stringResource(SYMR.strings.migration), - enabled = skipPreMigration || migrationSources.isNotEmpty(), - preferenceItems = persistentListOf( - Preference.PreferenceItem.SwitchPreference( - preference = unsortedPreferences.skipPreMigration(), - title = stringResource(SYMR.strings.skip_pre_migration), - subtitle = stringResource(SYMR.strings.pref_skip_pre_migration_summary), - ), - ), - ) - } // SY <-- } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt index 73c9f392c..34b4e4346 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt @@ -45,7 +45,6 @@ import logcat.LogPriority import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.sy.SYMR import tachiyomi.presentation.core.components.material.padding @@ -68,14 +67,13 @@ object SettingsMangadexScreen : SearchableSettings { @Composable override fun getPreferences(): List { val sourcePreferences: SourcePreferences = remember { Injekt.get() } - val unsortedPreferences: UnsortedPreferences = remember { Injekt.get() } val trackPreferences: TrackPreferences = remember { Injekt.get() } - val mdex = remember { MdUtil.getEnabledMangaDex(unsortedPreferences, sourcePreferences) } ?: return emptyList() + val mdex = remember { MdUtil.getEnabledMangaDex(sourcePreferences) } ?: return emptyList() return listOf( loginPreference(mdex, trackPreferences), - preferredMangaDexId(unsortedPreferences, sourcePreferences), - syncMangaDexIntoThis(unsortedPreferences), + preferredMangaDexId(sourcePreferences), + syncMangaDexIntoThis(sourcePreferences), syncLibraryToMangaDex(), ) } @@ -177,11 +175,10 @@ object SettingsMangadexScreen : SearchableSettings { @Composable fun preferredMangaDexId( - unsortedPreferences: UnsortedPreferences, sourcePreferences: SourcePreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - preference = unsortedPreferences.preferredMangaDexId(), + preference = sourcePreferences.preferredMangaDexId(), entries = MdUtil.getEnabledMangaDexs(sourcePreferences) .associate { it.id.toString() to it.toString() } .toImmutableMap(), @@ -253,7 +250,7 @@ object SettingsMangadexScreen : SearchableSettings { } @Composable - fun syncMangaDexIntoThis(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.TextPreference { + fun syncMangaDexIntoThis(sourcePreferences: SourcePreferences): Preference.PreferenceItem.TextPreference { val context = LocalContext.current var dialogOpen by remember { mutableStateOf(false) } if (dialogOpen) { @@ -261,7 +258,7 @@ object SettingsMangadexScreen : SearchableSettings { onDismissRequest = { dialogOpen = false }, onSelectionConfirmed = { items -> dialogOpen = false - unsortedPreferences.mangadexSyncToLibraryIndexes().set( + sourcePreferences.mangadexSyncToLibraryIndexes().set( List(items.size) { index -> (index + 1).toString() }.toSet(), ) LibraryUpdateJob.startNow( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index d07ea6fe5..5696a4600 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -21,6 +21,7 @@ import androidx.work.workDataOf import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.model.toSManga +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.sync.SyncPreferences import eu.kanade.domain.track.model.toDbTrack import eu.kanade.domain.track.model.toDomainTrack @@ -61,7 +62,6 @@ import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.preference.getAndSet import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.model.Category import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.chapter.model.NoChaptersException @@ -560,7 +560,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet * filter all follows from Mangadex and only add reading or rereading manga to library */ private suspend fun syncFollows() = coroutineScope { - val preferences = Injekt.get() + val preferences = Injekt.get() var count = 0 val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager = sourceManager) ?: return@coroutineScope diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt index f7f6dc8a3..2c026775a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt @@ -18,8 +18,6 @@ import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR import tachiyomi.i18n.sy.SYMR -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get import tachiyomi.domain.track.model.Track as DomainTrack class MdList(id: Long) : BaseTracker(id, "MDList") { @@ -30,7 +28,7 @@ class MdList(id: Long) : BaseTracker(id, "MDList") { .toImmutableList() } - private val mdex by lazy { MdUtil.getEnabledMangaDex(Injekt.get()) } + private val mdex by lazy { MdUtil.getEnabledMangaDex() } val interceptor = MangaDexAuthInterceptor(trackPreferences, this) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt index c637fef09..9a5e96143 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt @@ -5,8 +5,8 @@ import android.os.Build import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.util.system.isFossBuildType import eu.kanade.tachiyomi.util.system.isPreviewBuildType +import exh.source.ExhPreferences import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.release.interactor.GetApplicationRelease import tachiyomi.domain.release.service.AppUpdatePolicy import uy.kohesive.injekt.Injekt @@ -22,14 +22,14 @@ class AppUpdateChecker( private val getApplicationRelease: GetApplicationRelease by injectLazy() // KMK --> - private val preferences by lazy { Injekt.get() } + private val exhPreferences by lazy { Injekt.get() } // KMK <-- suspend fun checkForUpdate( context: Context, forceCheck: Boolean = false, // KMK --> - autoUpdate: Boolean = AppUpdatePolicy.DISABLE_AUTO_DOWNLOAD !in preferences.appShouldAutoUpdate().get(), + autoUpdate: Boolean = AppUpdatePolicy.DISABLE_AUTO_DOWNLOAD !in exhPreferences.appShouldAutoUpdate().get(), // KMK <-- ): GetApplicationRelease.Result { return withIOContext { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt index 0502ae187..2d060582b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateDownloadJob.kt @@ -31,6 +31,7 @@ import eu.kanade.tachiyomi.util.system.setForegroundSafely import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.workManager import exh.log.xLogE +import exh.source.ExhPreferences import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.cancel import kotlinx.coroutines.coroutineScope @@ -41,7 +42,6 @@ import okhttp3.internal.http2.StreamResetException import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.launchUI import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.release.service.AppUpdatePolicy import tachiyomi.i18n.MR import uy.kohesive.injekt.Injekt @@ -59,7 +59,7 @@ class AppUpdateDownloadJob(private val context: Context, workerParams: WorkerPar private val network: NetworkHelper by injectLazy() // KMK --> - private val preferences = Injekt.get() + private val exhPreferences = Injekt.get() // KMK <-- override suspend fun doWork(): Result { @@ -70,7 +70,7 @@ class AppUpdateDownloadJob(private val context: Context, workerParams: WorkerPar return Result.failure() } if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { - val restrictions = preferences.appShouldAutoUpdate().get() + val restrictions = exhPreferences.appShouldAutoUpdate().get() if (( AppUpdatePolicy.DEVICE_ONLY_ON_WIFI in restrictions && !context.isConnectedToWifi() @@ -294,7 +294,7 @@ class AppUpdateDownloadJob(private val context: Context, workerParams: WorkerPar // KMK --> if (scheduled) { data.putBoolean(SCHEDULED_RUN, true) - val restrictions = Injekt.get().appShouldAutoUpdate().get() + val restrictions = Injekt.get().appShouldAutoUpdate().get() val networkType = if (AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/SYPreferenceModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/SYPreferenceModule.kt index 7ca8c4f75..513408120 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/di/SYPreferenceModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/di/SYPreferenceModule.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.di import android.app.Application import exh.pref.DelegateSourcePreferences -import tachiyomi.domain.UnsortedPreferences +import exh.source.ExhPreferences import uy.kohesive.injekt.api.InjektModule import uy.kohesive.injekt.api.InjektRegistrar import uy.kohesive.injekt.api.addSingletonFactory @@ -18,7 +18,7 @@ class SYPreferenceModule(val application: Application) : InjektModule { } addSingletonFactory { - UnsortedPreferences(get()) + ExhPreferences(get()) } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index 97c305cc5..f2fd81758 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -19,6 +19,7 @@ import exh.log.xLogD import exh.source.BlacklistedSources import exh.source.EHENTAI_EXT_SOURCES import exh.source.EXHENTAI_EXT_SOURCES +import exh.source.ExhPreferences import exh.source.MERGED_SOURCE_ID import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob @@ -33,7 +34,6 @@ import kotlinx.coroutines.flow.stateIn import logcat.LogPriority import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.model.StubSource import tachiyomi.i18n.MR import uy.kohesive.injekt.Injekt @@ -172,7 +172,7 @@ class ExtensionManager( private fun Extension.isBlacklisted( blacklistEnabled: Boolean = preferences.enableSourceBlacklist().get(), // KMK --> - isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get(), + isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get(), // KMK <-- ): Boolean { return pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt index 2c174922f..1cefa8afd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.awaitSuccess import eu.kanade.tachiyomi.network.parseAs import exh.source.BlacklistedSources +import exh.source.ExhPreferences import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.serialization.Serializable @@ -23,7 +24,6 @@ import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy @@ -183,7 +183,7 @@ internal class ExtensionApi { private fun Extension.isBlacklisted( blacklistEnabled: Boolean = sourcePreferences.enableSourceBlacklist().get(), // KMK --> - isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get(), + isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get(), // KMK <-- ): Boolean { return pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/AndroidSourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/source/AndroidSourceManager.kt index 6d915b3a1..cd18992e4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/AndroidSourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/AndroidSourceManager.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.source import android.content.Context +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.source.online.HttpSource @@ -21,6 +22,7 @@ import exh.source.EHENTAI_EXT_SOURCES import exh.source.EIGHTMUSES_SOURCE_ID import exh.source.EXHENTAI_EXT_SOURCES import exh.source.EnhancedHttpSource +import exh.source.ExhPreferences import exh.source.HBROWSE_SOURCE_ID import exh.source.MERGED_SOURCE_ID import exh.source.PURURIN_SOURCE_ID @@ -38,7 +40,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.model.StubSource import tachiyomi.domain.source.repository.StubSourceRepository import tachiyomi.domain.source.service.SourceManager @@ -71,19 +72,20 @@ class AndroidSourceManager( } // SY --> - private val preferences: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() + private val sourcePreferences: SourcePreferences by injectLazy() // SY <-- init { scope.launch { extensionManager.installedExtensionsFlow // SY --> - .combine(preferences.enableExhentai().changes()) { extensions, enableExhentai -> + .combine(exhPreferences.enableExhentai().changes()) { extensions, enableExhentai -> extensions to enableExhentai } // KMK --> .combine( - preferences.isHentaiEnabled().changes(), + exhPreferences.isHentaiEnabled().changes(), ) { (a, b), c -> Triple(a, b, c) } // KMK <-- // SY <-- @@ -95,7 +97,7 @@ class AndroidSourceManager( Injekt.get(), Injekt.get(), // SY --> - preferences.allowLocalSourceHiddenFolders()::get, + sourcePreferences.allowLocalSourceHiddenFolders()::get, // SY <-- ), ), diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt index aae14e9c3..69e821e35 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt @@ -44,6 +44,7 @@ import exh.metadata.metadata.EHentaiSearchMetadata.Companion.TAG_TYPE_WEAK import exh.metadata.metadata.RaisedSearchMetadata.Companion.TAG_TYPE_VIRTUAL import exh.metadata.metadata.RaisedSearchMetadata.Companion.toGenreString import exh.metadata.metadata.base.RaisedTag +import exh.source.ExhPreferences import exh.ui.login.EhLoginActivity import exh.util.UriFilter import exh.util.UriGroup @@ -84,7 +85,6 @@ import org.jsoup.nodes.TextNode import rx.Observable import tachiyomi.core.common.util.lang.runAsObservable import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences import uy.kohesive.injekt.injectLazy import java.io.ByteArrayOutputStream import java.io.IOException @@ -133,7 +133,7 @@ class EHentai( } // KMK <-- - private val preferences: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() private val updateHelper: EHentaiUpdateHelper by injectLazy() /** @@ -500,7 +500,7 @@ class EHentai( } private fun T.checkValid(): MangasPage = - if (exh && mangas.isEmpty() && preferences.igneousVal().get().equals("mystery", true)) { + if (exh && mangas.isEmpty() && exhPreferences.igneousVal().get().equals("mystery", true)) { throw Exception( "Invalid igneous cookie, try re-logging or finding a correct one to input in the login menu", ) @@ -910,30 +910,30 @@ class EHentai( } fun spPref() = if (exh) { - preferences.exhSettingsProfile() + exhPreferences.exhSettingsProfile() } else { - preferences.ehSettingsProfile() + exhPreferences.ehSettingsProfile() } private fun rawCookies(sp: Int): Map { val cookies: MutableMap = mutableMapOf() - if (preferences.enableExhentai().get()) { - cookies[EhLoginActivity.MEMBER_ID_COOKIE] = preferences.memberIdVal().get() - cookies[EhLoginActivity.PASS_HASH_COOKIE] = preferences.passHashVal().get() - cookies[EhLoginActivity.IGNEOUS_COOKIE] = preferences.igneousVal().get() + if (exhPreferences.enableExhentai().get()) { + cookies[EhLoginActivity.MEMBER_ID_COOKIE] = exhPreferences.memberIdVal().get() + cookies[EhLoginActivity.PASS_HASH_COOKIE] = exhPreferences.passHashVal().get() + cookies[EhLoginActivity.IGNEOUS_COOKIE] = exhPreferences.igneousVal().get() cookies["sp"] = sp.toString() - val sessionKey = preferences.exhSettingsKey().get() + val sessionKey = exhPreferences.exhSettingsKey().get() if (sessionKey.isNotBlank()) { cookies["sk"] = sessionKey } - val sessionCookie = preferences.exhSessionCookie().get() + val sessionCookie = exhPreferences.exhSessionCookie().get() if (sessionCookie.isNotBlank()) { cookies["s"] = sessionCookie } - val hathPerksCookie = preferences.exhHathPerksCookies().get() + val hathPerksCookie = exhPreferences.exhHathPerksCookies().get() if (hathPerksCookie.isNotBlank()) { cookies["hath_perks"] = hathPerksCookie } @@ -980,7 +980,7 @@ class EHentai( ToplistOptions(), Filter.Separator(), AutoCompleteTags(), - Watched(isEnabled = preferences.exhWatchedListDefaultState().get()), + Watched(isEnabled = exhPreferences.exhWatchedListDefaultState().get()), GenreGroup(), AdvancedGroup(), ReverseFilter(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt index a8a5724d6..422fd5ddc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Modifier import androidx.compose.ui.viewinterop.AndroidView import androidx.core.view.isVisible +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.theme.colorscheme.AndroidViewColorScheme import eu.kanade.tachiyomi.databinding.MigrationBottomSheetBinding @@ -25,7 +26,6 @@ import eu.kanade.tachiyomi.util.system.toast import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.util.lang.toLong -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.sy.SYMR import uy.kohesive.injekt.injectLazy @@ -110,7 +110,7 @@ class MigrationBottomSheetDialogState( private val fullSettings: Boolean = true, // KMK <-- ) { - private val preferences: UnsortedPreferences by injectLazy() + private val preferences: SourcePreferences by injectLazy() /** * Init general reader preferences. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationScreenModel.kt index f831acdc6..6dad92d9f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationScreenModel.kt @@ -10,14 +10,12 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import tachiyomi.core.common.util.lang.launchIO -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.service.SourceManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get class PreMigrationScreenModel( private val sourceManager: SourceManager = Injekt.get(), - private val prefs: UnsortedPreferences = Injekt.get(), private val sourcePreferences: SourcePreferences = Injekt.get(), ) : ScreenModel { @@ -53,7 +51,7 @@ class PreMigrationScreenModel( */ private fun getEnabledSources(): List { val languages = sourcePreferences.enabledLanguages().get() - val sourcesSaved = prefs.migrationSources().get().split("/") + val sourcesSaved = sourcePreferences.migrationSources().get().split("/") .mapNotNull { it.toLongOrNull() } val disabledSources = sourcePreferences.disabledSources().get() .mapNotNull { it.toLongOrNull() } @@ -134,6 +132,6 @@ class PreMigrationScreenModel( ?.joinToString("/") { it.source.id.toString() } .orEmpty() - prefs.migrationSources().set(listOfSources) + sourcePreferences.migrationSources().set(listOfSources) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt index cab0391ab..edae327ff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt @@ -7,6 +7,7 @@ import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.model.toSManga +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.getNameForMangaInfo import eu.kanade.tachiyomi.source.online.all.EHentai @@ -35,7 +36,6 @@ import logcat.LogPriority import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId import tachiyomi.domain.manga.interactor.GetManga import tachiyomi.domain.manga.interactor.GetMergedReferencesById @@ -50,7 +50,7 @@ import java.util.concurrent.atomic.AtomicInteger class MigrationListScreenModel( private val config: MigrationProcedureConfig, - private val preferences: UnsortedPreferences = Injekt.get(), + private val preferences: SourcePreferences = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(), private val getManga: GetManga = Injekt.get(), private val networkToLocalManga: NetworkToLocalManga = Injekt.get(), @@ -214,7 +214,7 @@ class MigrationListScreenModel( try { syncChaptersWithSource.await(chapters, localManga, source) - } catch (e: Exception) { + } catch (_: Exception) { return@async2 null } manga.progress.value = @@ -226,7 +226,7 @@ class MigrationListScreenModel( } catch (e: CancellationException) { // Ignore cancellations throw e - } catch (e: Exception) { + } catch (_: Exception) { null } } @@ -261,7 +261,7 @@ class MigrationListScreenModel( } catch (e: CancellationException) { // Ignore cancellations throw e - } catch (e: Exception) { + } catch (_: Exception) { null } manga.progress.value = validSources.size to (index + 1) @@ -274,7 +274,7 @@ class MigrationListScreenModel( // KMK --> manga.searchingJob?.await() // KMK <-- - } catch (e: CancellationException) { + } catch (_: CancellationException) { // Ignore canceled migrations continue } @@ -340,7 +340,7 @@ class MigrationListScreenModel( val source = sourceManager.get(manga.source)!! val chapters = source.getChapterList(manga.toSManga()) syncChaptersWithSource.await(chapters, manga, source) - } catch (e: Exception) { + } catch (_: Exception) { return@async null } manga diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreen.kt index 7b3b7cb29..af7c7352d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreen.kt @@ -8,13 +8,13 @@ import androidx.compose.ui.platform.LocalContext import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.browse.MigrateMangaScreen import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.flow.collectLatest -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR import tachiyomi.presentation.core.screens.LoadingScreen @@ -45,7 +45,7 @@ data class MigrateMangaScreen( onClickItem = { // SY --> PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, listOf(it.id), ) @@ -56,14 +56,14 @@ data class MigrateMangaScreen( onMultiMigrateClicked = { if (state.selectionMode) { PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, state.selected.map { it.manga.id }, ) } else { context.toast(KMR.strings.migrating_all_entries) PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, state.titles.map { it.manga.id }, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt index 3ec7fe244..964770a8b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt @@ -24,6 +24,7 @@ import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.model.hasCustomCover import eu.kanade.domain.manga.model.toSManga +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.track.EnhancedTracker @@ -37,13 +38,12 @@ import kotlinx.coroutines.flow.update import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.withUIContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.SetMangaCategories import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId import tachiyomi.domain.chapter.interactor.UpdateChapter import tachiyomi.domain.chapter.model.ChapterUpdate -import tachiyomi.domain.history.interactor.GetHistoryByMangaId +import tachiyomi.domain.history.interactor.GetHistory import tachiyomi.domain.history.interactor.UpsertHistory import tachiyomi.domain.history.model.HistoryUpdate import tachiyomi.domain.manga.model.Manga @@ -151,13 +151,13 @@ internal fun MigrateDialog( internal class MigrateDialogScreenModel( private val sourceManager: SourceManager = Injekt.get(), // KMK --> - preferences: UnsortedPreferences = Injekt.get(), + sourcePreferences: SourcePreferences = Injekt.get(), // KMK <-- ) : StateScreenModel(State()) { val migrateFlags: Preference by lazy { // KMK --> - preferences.migrateFlags() + sourcePreferences.migrateFlags() // KMK <-- } @@ -210,14 +210,14 @@ internal class MigrateDialogScreenModel( // KMK --> if (oldManga.id == newManga.id) return // Nothing to migrate - val preferences: UnsortedPreferences = Injekt.get() + val sourcePreferences: SourcePreferences = Injekt.get() val downloadManager: DownloadManager = Injekt.get() val coverCache: CoverCache = Injekt.get() val updateManga: UpdateManga = Injekt.get() val syncChaptersWithSource: SyncChaptersWithSource = Injekt.get() val updateChapter: UpdateChapter = Injekt.get() val getChaptersByMangaId: GetChaptersByMangaId = Injekt.get() - val getHistoryByMangaId: GetHistoryByMangaId = Injekt.get() + val getHistory: GetHistory = Injekt.get() val upsertHistory: UpsertHistory = Injekt.get() val getCategories: GetCategories = Injekt.get() val setMangaCategories: SetMangaCategories = Injekt.get() @@ -227,7 +227,7 @@ internal class MigrateDialogScreenModel( Injekt.get().trackers.filterIsInstance() } - val flags = presetFlags ?: preferences.migrateFlags().get() + val flags = presetFlags ?: sourcePreferences.migrateFlags().get() // KMK <-- val migrateChapters = MigrationFlags.hasChapters(flags) @@ -256,7 +256,7 @@ internal class MigrateDialogScreenModel( .maxOfOrNull { it.chapterNumber } // SY --> - val prevHistoryList = getHistoryByMangaId.await(oldManga.id) + val prevHistoryList = getHistory.await(oldManga.id) // KMK --> .associateBy { it.chapterId } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt index 1bfbec981..f745105e4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt @@ -65,6 +65,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.webview.WebViewScreen import eu.kanade.tachiyomi.util.system.toast import exh.md.follows.MangaDexFollowsScreen +import exh.source.ExhPreferences import exh.source.anyIs import exh.source.isEhBasedSource import exh.source.isMdBasedSource @@ -75,7 +76,6 @@ import kotlinx.coroutines.flow.receiveAsFlow import mihon.presentation.core.util.collectAsLazyPagingItems import tachiyomi.core.common.Constants import tachiyomi.core.common.util.lang.launchIO -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.model.StubSource import tachiyomi.i18n.MR import tachiyomi.i18n.kmk.KMR @@ -179,7 +179,7 @@ data class BrowseSourceScreen( // KMK --> val mangaList = screenModel.mangaPagerFlowFlow.collectAsLazyPagingItems() - val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() + val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() val isConfigurableSource = screenModel.source.anyIs() || (screenModel.source.isEhBasedSource() && isHentaiEnabled) // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt index 86862063b..a03e758e3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt @@ -33,6 +33,7 @@ import eu.kanade.tachiyomi.source.online.all.MangaDex import eu.kanade.tachiyomi.util.removeCovers import exh.metadata.metadata.RaisedSearchMetadata import exh.source.EH_PACKAGE +import exh.source.ExhPreferences import exh.source.LOCAL_SOURCE_PACKAGE import exh.source.getMainSource import exh.source.isEhBasedSource @@ -61,7 +62,6 @@ import tachiyomi.core.common.preference.mapAsCheckboxState import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.withUIContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.SetMangaCategories import tachiyomi.domain.category.model.Category @@ -116,7 +116,7 @@ open class BrowseSourceScreenModel( // KMK <-- // SY --> - unsortedPreferences: UnsortedPreferences = Injekt.get(), + exhPreferences: ExhPreferences = Injekt.get(), uiPreferences: UiPreferences = Injekt.get(), private val getFlatMetadataById: GetFlatMetadataById = Injekt.get(), private val deleteSavedSearchById: DeleteSavedSearchById = Injekt.get(), @@ -130,7 +130,7 @@ open class BrowseSourceScreenModel( var source = sourceManager.getOrStub(sourceId) // SY --> - val ehentaiBrowseDisplayMode by unsortedPreferences.enhancedEHentaiView().asState(screenModelScope) + val ehentaiBrowseDisplayMode by exhPreferences.enhancedEHentaiView().asState(screenModelScope) val startExpanded by uiPreferences.expandFilters().asState(screenModelScope) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index 83b4e1881..ea9801f04 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -36,10 +36,10 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.webview.WebViewScreen import eu.kanade.tachiyomi.util.system.toast import exh.md.follows.MangaDexFollowsScreen +import exh.source.ExhPreferences import exh.source.anyIs import exh.source.isEhBasedSource import exh.util.nullIfBlank -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.interactor.GetRemoteManga import tachiyomi.domain.source.model.SavedSearch @@ -84,7 +84,7 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() val showingFeedOrderScreen = rememberSaveable { mutableStateOf(false) } - val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() + val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() val isConfigurableSource = screenModel.source.anyIs() || (screenModel.source.isEhBasedSource() && isHentaiEnabled) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 6daaeaf52..e3391604b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -47,6 +47,7 @@ import exh.search.QueryComponent import exh.search.SearchEngine import exh.search.Text import exh.source.EH_SOURCE_ID +import exh.source.ExhPreferences import exh.source.MANGADEX_IDS import exh.source.MERGED_SOURCE_ID import exh.source.isEhBasedManga @@ -89,7 +90,6 @@ import tachiyomi.core.common.util.lang.compareToWithCollator import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.SetMangaCategories import tachiyomi.domain.category.model.Category @@ -145,7 +145,7 @@ class LibraryScreenModel( private val downloadCache: DownloadCache = Injekt.get(), private val trackerManager: TrackerManager = Injekt.get(), // SY --> - private val unsortedPreferences: UnsortedPreferences = Injekt.get(), + private val exhPreferences: ExhPreferences = Injekt.get(), private val sourcePreferences: SourcePreferences = Injekt.get(), private val getMergedMangaById: GetMergedMangaById = Injekt.get(), private val getTracks: GetTracks = Injekt.get(), @@ -359,9 +359,9 @@ class LibraryScreenModel( // SY --> combine( - unsortedPreferences.isHentaiEnabled().changes(), + exhPreferences.isHentaiEnabled().changes(), sourcePreferences.disabledSources().changes(), - unsortedPreferences.enableExhentai().changes(), + exhPreferences.enableExhentai().changes(), ) { isHentaiEnabled, disabledSources, enableExhentai -> isHentaiEnabled && (EH_SOURCE_ID.toString() !in disabledSources || enableExhentai) } @@ -1000,7 +1000,7 @@ class LibraryScreenModel( @OptIn(DelicateCoroutinesApi::class) fun syncMangaToDex() { launchIO { - MdUtil.getEnabledMangaDex(unsortedPreferences, sourcePreferences, sourceManager)?.let { mdex -> + MdUtil.getEnabledMangaDex(sourcePreferences, sourceManager)?.let { mdex -> state.value.selectedManga.fastFilter { it.source in mangaDexSourceIds }.fastForEach { manga -> mdex.updateFollowStatus(MdUtil.getMangaId(manga.url), FollowStatus.READING) } @@ -1574,13 +1574,13 @@ class LibraryScreenModel( } fun onAcceptSyncWarning() { - unsortedPreferences.exhShowSyncIntro().set(false) + exhPreferences.exhShowSyncIntro().set(false) } fun openFavoritesSyncDialog() { mutableState.update { it.copy( - dialog = if (unsortedPreferences.exhShowSyncIntro().get()) { + dialog = if (exhPreferences.exhShowSyncIntro().get()) { Dialog.SyncFavoritesWarning } else { Dialog.SyncFavoritesConfirm diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt index c1d1b7059..a49c8c570 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt @@ -29,6 +29,7 @@ import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.tab.LocalTabNavigator import cafe.adriel.voyager.navigator.tab.TabOptions +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.library.DeleteLibraryMangaDialog import eu.kanade.presentation.library.LibrarySettingsDialog @@ -69,7 +70,6 @@ import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.launch import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.launchIO -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.model.Category import tachiyomi.domain.library.model.LibraryGroup import tachiyomi.domain.library.model.LibraryManga @@ -211,7 +211,7 @@ data object LibraryTab : Tab { screenModel.clearSelection() if (selectedMangaIds.isNotEmpty()) { PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, selectedMangaIds, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/libraryUpdateError/LibraryUpdateErrorScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/libraryUpdateError/LibraryUpdateErrorScreen.kt index b785fedd5..01277932f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/libraryUpdateError/LibraryUpdateErrorScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/libraryUpdateError/LibraryUpdateErrorScreen.kt @@ -6,11 +6,11 @@ import androidx.compose.runtime.getValue import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.libraryUpdateError.LibraryUpdateErrorScreen import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen -import tachiyomi.domain.UnsortedPreferences import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -26,7 +26,7 @@ class LibraryUpdateErrorScreen : Screen() { state = state, onClick = { item -> PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, listOf(item.error.mangaId), ) @@ -34,7 +34,7 @@ class LibraryUpdateErrorScreen : Screen() { onClickCover = { item -> navigator.push(MangaScreen(item.error.mangaId)) }, onMultiMigrateClicked = { PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, state.selected.map { it.error.mangaId }, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 730e8b876..0a0f721f0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -104,6 +104,7 @@ import eu.kanade.tachiyomi.util.view.setComposeContent import exh.debug.DebugToggles import exh.eh.EHentaiUpdateWorker import exh.log.DebugModeOverlay +import exh.source.ExhPreferences import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.callbackFlow @@ -123,7 +124,6 @@ import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.backup.service.BackupPreferences import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.release.interactor.GetApplicationRelease @@ -142,7 +142,7 @@ class MainActivity : BaseActivity() { private val preferences: BasePreferences by injectLazy() // SY --> - private val unsortedPreferences: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() // SY <-- // KMK --> @@ -277,8 +277,8 @@ class MainActivity : BaseActivity() { // SY --> initWhenIdle { // Upload settings - if (unsortedPreferences.enableExhentai().get() && - unsortedPreferences.exhShowSettingsUploadWarning().get() + if (exhPreferences.enableExhentai().get() && + exhPreferences.exhShowSettingsUploadWarning().get() ) { runExhConfigureDialog = true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt index 89cf99df2..3b2ad4391 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt @@ -45,6 +45,7 @@ import dev.icerock.moko.resources.StringResource import eu.kanade.core.util.ifSourcesLoaded import eu.kanade.domain.manga.model.hasCustomCover import eu.kanade.domain.manga.model.toSManga +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.browse.components.BulkFavoriteDialogs import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.NavigatorAdaptiveSheet @@ -89,6 +90,7 @@ import eu.kanade.tachiyomi.util.system.toShareIntent import eu.kanade.tachiyomi.util.system.toast import exh.pagepreview.PagePreviewScreen import exh.recs.RecommendsScreen +import exh.source.ExhPreferences import exh.source.MERGED_SOURCE_ID import exh.source.anyIs import exh.source.getMainSource @@ -109,7 +111,6 @@ import tachiyomi.core.common.util.lang.launchUI import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withNonCancellableContext import tachiyomi.core.common.util.system.logcat -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.interactor.GetRemoteManga @@ -264,7 +265,7 @@ class MangaScreen( val hazeState = remember { HazeState() } val fullCoverBackground = MaterialTheme.colorScheme.surfaceTint.blend(MaterialTheme.colorScheme.surface) - val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() + val isHentaiEnabled: Boolean = Injekt.get().isHentaiEnabled().get() val isConfigurableSource = successState.source.anyIs() || (successState.source.isEhBasedSource() && isHentaiEnabled) // KMK <-- @@ -368,7 +369,7 @@ class MangaScreen( onMigrateClicked = { // SY --> PreMigrationScreen.navigateToMigration( - Injekt.get().skipPreMigration().get(), + Injekt.get().skipPreMigration().get(), navigator, listOfNotNull(successState.manga.id), ) diff --git a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt index efc3adad1..a86c132ab 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt @@ -13,7 +13,7 @@ import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.chapter.model.ChapterUpdate import tachiyomi.domain.chapter.repository.ChapterRepository -import tachiyomi.domain.history.interactor.GetHistoryByMangaId +import tachiyomi.domain.history.interactor.GetHistory import tachiyomi.domain.history.interactor.RemoveHistory import tachiyomi.domain.history.interactor.UpsertHistory import tachiyomi.domain.history.model.History @@ -43,7 +43,7 @@ class EHentaiUpdateHelper(context: Context) { private val chapterRepository: ChapterRepository by injectLazy() private val upsertHistory: UpsertHistory by injectLazy() private val removeHistory: RemoveHistory by injectLazy() - private val getHistoryByMangaId: GetHistoryByMangaId by injectLazy() + private val getHistory: GetHistory by injectLazy() private val insertFavoriteEntryAlternative: InsertFavoriteEntryAlternative by injectLazy() /** @@ -70,7 +70,7 @@ class EHentaiUpdateHelper(context: Context) { getChaptersByMangaId.await(mangaId) } val history = async(Dispatchers.IO) { - getHistoryByMangaId.await(mangaId) + getHistory.await(mangaId) } ChapterChain( manga.await() ?: return@coroutineScope null, diff --git a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt index b97d27c3d..2d0b30c53 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt @@ -29,14 +29,13 @@ import exh.debug.DebugToggles import exh.eh.EHentaiUpdateWorkerConstants.UPDATES_PER_ITERATION import exh.log.xLog import exh.metadata.metadata.EHentaiSearchMetadata +import exh.source.ExhPreferences import exh.util.cancellable import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.toList -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import tachiyomi.core.common.preference.getAndSet -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.library.service.LibraryPreferences @@ -55,7 +54,7 @@ import kotlin.time.Duration.Companion.days class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) { - private val preferences: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() private val libraryPreferences: LibraryPreferences by injectLazy() private val sourceManager: SourceManager by injectLazy() private val updateHelper: EHentaiUpdateHelper by injectLazy() @@ -73,10 +72,11 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara override suspend fun doWork(): Result { return try { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P && - requiresWifiConnection(preferences) && + requiresWifiConnection(exhPreferences) && !context.isConnectedToWifi() ) { - Result.retry() // retry again later + logger.d("Retry again later in next periodic run due to missing Wi-Fi connection...") + Result.success() // retry again later in next periodic run } else { setForegroundSafely() startUpdating() @@ -84,7 +84,8 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara Result.success() } } catch (e: Exception) { - Result.retry() // retry again later + logger.d("Retry again later in next periodic run!", e) + Result.success() // retry again later in next periodic run } finally { updateNotifier.cancelProgressNotification() } @@ -220,7 +221,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara updatedThisIteration++ } } finally { - preferences.exhAutoUpdateStats().set( + exhPreferences.exhAutoUpdateStats().set( Json.encodeToString( EHentaiUpdaterStats( startTime, @@ -284,10 +285,10 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara } fun scheduleBackground(context: Context, prefInterval: Int? = null, prefRestrictions: Set? = null) { - val preferences = Injekt.get() - val interval = prefInterval ?: preferences.exhAutoUpdateFrequency().get() + val exhPreferences = Injekt.get() + val interval = prefInterval ?: exhPreferences.exhAutoUpdateFrequency().get() if (interval > 0) { - val restrictions = prefRestrictions ?: preferences.exhAutoUpdateRequirements().get() + val restrictions = prefRestrictions ?: exhPreferences.exhAutoUpdateRequirements().get() val acRestriction = DEVICE_CHARGING in restrictions val networkRequestBuilder = NetworkRequest.Builder() @@ -323,8 +324,8 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara } } - private fun requiresWifiConnection(preferences: UnsortedPreferences): Boolean { - val restrictions = preferences.exhAutoUpdateRequirements().get() + private fun requiresWifiConnection(exhPreferences: ExhPreferences): Boolean { + val restrictions = exhPreferences.exhAutoUpdateRequirements().get() return DEVICE_ONLY_ON_WIFI in restrictions } } diff --git a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt index de65e8c8d..c1216dbaf 100644 --- a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt +++ b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt @@ -14,6 +14,7 @@ import exh.eh.EHentaiUpdateWorker import exh.log.xLog import exh.source.EH_SOURCE_ID import exh.source.EXH_SOURCE_ID +import exh.source.ExhPreferences import exh.source.isEhBasedManga import exh.util.ThrottleManager import exh.util.createPartialWakeLock @@ -29,7 +30,6 @@ import okhttp3.Request import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withUIContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.category.interactor.CreateCategoryWithName import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.SetMangaCategories @@ -57,7 +57,7 @@ class FavoritesSyncHelper(val context: Context) { private val createCategoryWithName: CreateCategoryWithName by injectLazy() private val updateCategory: UpdateCategory by injectLazy() - private val prefs: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() private val exh by lazy { Injekt.get().get(EXH_SOURCE_ID) as? EHentai @@ -90,7 +90,7 @@ class FavoritesSyncHelper(val context: Context) { private suspend fun beginSync() { // Check if logged in - if (!prefs.enableExhentai().get()) { + if (!exhPreferences.enableExhentai().get()) { status.value = FavoritesSyncStatus.SyncError.NotLoggedInSyncError return } @@ -138,7 +138,7 @@ class FavoritesSyncHelper(val context: Context) { status.value = FavoritesSyncStatus.Processing.CalculatingRemoteChanges val remoteChanges = storage.getChangedRemoteEntries(favorites.first) - val localChanges = if (prefs.exhReadOnlySync().get()) { + val localChanges = if (exhPreferences.exhReadOnlySync().get()) { null // Do not build local changes if they are not going to be applied } else { status.value = FavoritesSyncStatus.Processing.CalculatingLocalChanges @@ -238,7 +238,7 @@ class FavoritesSyncHelper(val context: Context) { gallery.gid, ) - if (prefs.exhLenientSync().get()) { + if (exhPreferences.exhLenientSync().get()) { errorList += error } else { status.value = error @@ -289,7 +289,7 @@ class FavoritesSyncHelper(val context: Context) { ) if (!explicitlyRetryExhRequest(10, request)) { - if (prefs.exhLenientSync().get()) { + if (exhPreferences.exhLenientSync().get()) { errorList += FavoritesSyncStatus.SyncError.GallerySyncError.UnableToDeleteFromRemote } else { status.value = FavoritesSyncStatus.SyncError.GallerySyncError.UnableToDeleteFromRemote @@ -386,7 +386,7 @@ class FavoritesSyncHelper(val context: Context) { is GalleryAddEvent.Fail.UnknownSource -> FavoritesSyncStatus.SyncError.GallerySyncError.InvalidGalleryFail(it.title, result.galleryUrl) } - if (prefs.exhLenientSync().get()) { + if (exhPreferences.exhLenientSync().get()) { errorList += error } else { status.value = error diff --git a/app/src/main/java/exh/md/MangaDexLoginActivity.kt b/app/src/main/java/exh/md/MangaDexLoginActivity.kt index a1574a5cf..85d169231 100644 --- a/app/src/main/java/exh/md/MangaDexLoginActivity.kt +++ b/app/src/main/java/exh/md/MangaDexLoginActivity.kt @@ -16,14 +16,16 @@ class MangaDexLoginActivity : BaseOAuthLoginActivity() { val code = uri.getQueryParameter("code") if (code != null) { lifecycleScope.launchIO { - Injekt.get().isInitialized.first { it } - MdUtil.getEnabledMangaDex(Injekt.get())?.login(code) + val sourceManager = Injekt.get() + sourceManager.isInitialized.first { it } + MdUtil.getEnabledMangaDex(sourceManager = sourceManager)?.login(code) returnToSettings() } } else { lifecycleScope.launchIO { - Injekt.get().isInitialized.first { it } - MdUtil.getEnabledMangaDex(Injekt.get())?.logout() + val sourceManager = Injekt.get() + sourceManager.isInitialized.first { it } + MdUtil.getEnabledMangaDex(sourceManager = sourceManager)?.logout() returnToSettings() } } diff --git a/app/src/main/java/exh/md/utils/MdUtil.kt b/app/src/main/java/exh/md/utils/MdUtil.kt index fddd7a198..fdd96feaf 100644 --- a/app/src/main/java/exh/md/utils/MdUtil.kt +++ b/app/src/main/java/exh/md/utils/MdUtil.kt @@ -19,7 +19,6 @@ import exh.source.getMainSource import exh.util.dropBlank import exh.util.floor import exh.util.nullIfZero -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.FormBody import okhttp3.Headers @@ -28,7 +27,6 @@ import okhttp3.Request import okhttp3.RequestBody import okhttp3.RequestBody.Companion.toRequestBody import org.jsoup.parser.Parser -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.service.SourceManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -234,9 +232,9 @@ class MdUtil { return codeVerifier ?: PkceUtil.generateCodeVerifier().also { codeVerifier = it } } - fun getEnabledMangaDex(preferences: UnsortedPreferences, sourcePreferences: SourcePreferences = Injekt.get(), sourceManager: SourceManager = Injekt.get()): MangaDex? { + fun getEnabledMangaDex(sourcePreferences: SourcePreferences = Injekt.get(), sourceManager: SourceManager = Injekt.get()): MangaDex? { return getEnabledMangaDexs(sourcePreferences, sourceManager).let { mangadexs -> - preferences.preferredMangaDexId().get().toLongOrNull()?.nullIfZero() + sourcePreferences.preferredMangaDexId().get().toLongOrNull()?.nullIfZero() ?.let { preferredMangaDexId -> mangadexs.firstOrNull { it.id == preferredMangaDexId } } diff --git a/app/src/main/java/exh/recs/batch/RecommendationSearchBottomSheetDialog.kt b/app/src/main/java/exh/recs/batch/RecommendationSearchBottomSheetDialog.kt index 535bed570..bfb5bd54e 100644 --- a/app/src/main/java/exh/recs/batch/RecommendationSearchBottomSheetDialog.kt +++ b/app/src/main/java/exh/recs/batch/RecommendationSearchBottomSheetDialog.kt @@ -6,9 +6,9 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.viewinterop.AndroidView +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.tachiyomi.databinding.RecommendationSearchBottomSheetBinding -import tachiyomi.domain.UnsortedPreferences import uy.kohesive.injekt.injectLazy @Composable @@ -30,7 +30,7 @@ fun RecommendationSearchBottomSheetDialog( } class RecommendationSearchBottomSheetDialogState(private val onSearchRequest: () -> Unit) { - private val preferences: UnsortedPreferences by injectLazy() + private val preferences: SourcePreferences by injectLazy() fun initPreferences(binding: RecommendationSearchBottomSheetBinding) { val flags = preferences.recommendationSearchFlags().get() diff --git a/app/src/main/java/exh/recs/batch/RecommendationSearchHelper.kt b/app/src/main/java/exh/recs/batch/RecommendationSearchHelper.kt index cce2c7dbf..1c0a28d85 100644 --- a/app/src/main/java/exh/recs/batch/RecommendationSearchHelper.kt +++ b/app/src/main/java/exh/recs/batch/RecommendationSearchHelper.kt @@ -6,6 +6,7 @@ import android.os.PowerManager import androidx.annotation.StringRes import androidx.core.net.toUri import eu.kanade.domain.manga.model.toSManga +import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.source.model.SManga import exh.log.xLog import exh.recs.sources.RecommendationPagingSource @@ -27,7 +28,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import mihon.domain.manga.model.toDomainManga import tachiyomi.data.source.NoResultsException -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.library.model.LibraryManga import tachiyomi.domain.manga.interactor.GetLibraryManga import tachiyomi.domain.manga.interactor.NetworkToLocalManga @@ -45,7 +45,7 @@ class RecommendationSearchHelper(val context: Context) { private val getLibraryManga: GetLibraryManga by injectLazy() private val getTracks: GetTracks by injectLazy() private val networkToLocalManga: NetworkToLocalManga by injectLazy() - private val prefs: UnsortedPreferences by injectLazy() + private val preferences: SourcePreferences by injectLazy() private var wifiLock: WifiManager.WifiLock? = null private var wakeLock: PowerManager.WakeLock? = null @@ -68,7 +68,7 @@ class RecommendationSearchHelper(val context: Context) { } private suspend fun beginSearch(mangaList: List) { - val flags = prefs.recommendationSearchFlags().get() + val flags = preferences.recommendationSearchFlags().get() val libraryManga = getLibraryManga.await() val tracks = getTracks.await() @@ -192,7 +192,7 @@ class RecommendationSearchHelper(val context: Context) { libraryManga: List, tracks: List, ): List { - val flags = prefs.recommendationSearchFlags().get() + val flags = preferences.recommendationSearchFlags().get() if (!SearchFlags.hasHideLibraryResults(flags)) { return this diff --git a/app/src/main/java/exh/uconfig/EHConfigurator.kt b/app/src/main/java/exh/uconfig/EHConfigurator.kt index b0f133018..4d0dde552 100644 --- a/app/src/main/java/exh/uconfig/EHConfigurator.kt +++ b/app/src/main/java/exh/uconfig/EHConfigurator.kt @@ -8,19 +8,19 @@ import exh.log.maybeInjectEHLogger import exh.log.xLogD import exh.source.EH_SOURCE_ID import exh.source.EXH_SOURCE_ID +import exh.source.ExhPreferences import okhttp3.FormBody import okhttp3.OkHttpClient import okhttp3.Request import tachiyomi.core.common.i18n.stringResource -import tachiyomi.domain.UnsortedPreferences import tachiyomi.domain.source.service.SourceManager import tachiyomi.i18n.sy.SYMR import uy.kohesive.injekt.injectLazy import java.util.Locale class EHConfigurator(val context: Context) { - private val prefs: UnsortedPreferences by injectLazy() - private val sources: SourceManager by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() + private val sourceManager: SourceManager by injectLazy() private val configuratorClient = OkHttpClient.Builder() .maybeInjectEHLogger() @@ -52,8 +52,8 @@ class EHConfigurator(val context: Context) { private val EHentai.uconfigUrl get() = baseUrl + UCONFIG_URL suspend fun configureAll() { - val ehSource = sources.get(EH_SOURCE_ID) as EHentai - val exhSource = sources.get(EXH_SOURCE_ID) as EHentai + val ehSource = sourceManager.get(EH_SOURCE_ID) as EHentai + val exhSource = sourceManager.get(EXH_SOURCE_ID) as EHentai // Get hath perks val perksPage = configuratorClient.newCall( @@ -146,13 +146,13 @@ class EHConfigurator(val context: Context) { }?.removePrefix("hath_perks=")?.substringBefore(';') if (keyCookie != null) { - prefs.exhSettingsKey().set(keyCookie) + exhPreferences.exhSettingsKey().set(keyCookie) } if (sessionCookie != null) { - prefs.exhSessionCookie().set(sessionCookie) + exhPreferences.exhSessionCookie().set(sessionCookie) } if (hathPerksCookie != null) { - prefs.exhHathPerksCookies().set(hathPerksCookie) + exhPreferences.exhHathPerksCookies().set(hathPerksCookie) } } diff --git a/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt b/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt index 7acf01a6b..340912b81 100644 --- a/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt +++ b/app/src/main/java/exh/uconfig/EhUConfigBuilder.kt @@ -1,18 +1,18 @@ package exh.uconfig +import exh.source.ExhPreferences import okhttp3.FormBody -import tachiyomi.domain.UnsortedPreferences import uy.kohesive.injekt.injectLazy import java.util.Locale class EhUConfigBuilder { - private val preferences: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() fun build(hathPerks: EHHathPerksResponse): FormBody { val configItems = mutableListOf() configItems += when ( - preferences.imageQuality() + exhPreferences.imageQuality() .get() .lowercase(Locale.getDefault()) ) { @@ -25,19 +25,19 @@ class EhUConfigBuilder { else -> Entry.ImageSize.AUTO } - configItems += when (preferences.useHentaiAtHome().get()) { + configItems += when (exhPreferences.useHentaiAtHome().get()) { 2 -> Entry.UseHentaiAtHome.NO 1 -> Entry.UseHentaiAtHome.DEFAULTONLY else -> Entry.UseHentaiAtHome.ANY } - configItems += if (preferences.useJapaneseTitle().get()) { + configItems += if (exhPreferences.useJapaneseTitle().get()) { Entry.TitleDisplayLanguage.JAPANESE } else { Entry.TitleDisplayLanguage.DEFAULT } - configItems += if (preferences.exhUseOriginalImages().get()) { + configItems += if (exhPreferences.exhUseOriginalImages().get()) { Entry.UseOriginalImages.YES } else { Entry.UseOriginalImages.NO @@ -61,13 +61,13 @@ class EhUConfigBuilder { configItems += Entry.UseMPV() configItems += Entry.ShowPopularRightNowPane() - configItems += Entry.TagFilteringThreshold(preferences.ehTagFilterValue().get()) - configItems += Entry.TagWatchingThreshold(preferences.ehTagWatchingValue().get()) + configItems += Entry.TagFilteringThreshold(exhPreferences.ehTagFilterValue().get()) + configItems += Entry.TagWatchingThreshold(exhPreferences.ehTagWatchingValue().get()) - configItems += Entry.LanguageSystem().getLanguages(preferences.exhSettingsLanguages().get().split("\n")) + configItems += Entry.LanguageSystem().getLanguages(exhPreferences.exhSettingsLanguages().get().split("\n")) configItems += Entry.Categories().categoryConfigs( - preferences.exhEnabledCategories().get().split(",").map { + exhPreferences.exhEnabledCategories().get().split(",").map { it.toBoolean() }, ) diff --git a/app/src/main/java/exh/ui/batchadd/BatchAddScreenModel.kt b/app/src/main/java/exh/ui/batchadd/BatchAddScreenModel.kt index 623e62a21..a791e4d42 100644 --- a/app/src/main/java/exh/ui/batchadd/BatchAddScreenModel.kt +++ b/app/src/main/java/exh/ui/batchadd/BatchAddScreenModel.kt @@ -8,6 +8,7 @@ import eu.kanade.core.preference.asState import exh.GalleryAddEvent import exh.GalleryAdder import exh.log.xLogE +import exh.source.ExhPreferences import exh.util.trimOrNull import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.Dispatchers @@ -16,18 +17,17 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences import tachiyomi.i18n.sy.SYMR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get class BatchAddScreenModel( - private val unsortedPreferences: UnsortedPreferences = Injekt.get(), + private val exhPreferences: ExhPreferences = Injekt.get(), ) : StateScreenModel(BatchAddState()) { private val galleryAdder by lazy { GalleryAdder() } // KMK --> - val isHentaiEnabled by Injekt.get().isHentaiEnabled().asState(screenModelScope) + val isHentaiEnabled by Injekt.get().isHentaiEnabled().asState(screenModelScope) // KMK <-- fun addGalleries(context: Context) { @@ -43,7 +43,7 @@ class BatchAddScreenModel( private fun addGalleries(context: Context, galleries: String) { val splitGalleries = if (ehVisitedRegex.containsMatchIn(galleries)) { - val url = if (unsortedPreferences.enableExhentai().get()) { + val url = if (exhPreferences.enableExhentai().get()) { "https://exhentai.org/g/" } else { "https://e-hentai.org/g/" @@ -137,7 +137,7 @@ class BatchAddScreenModel( } sealed class Dialog { - object NoGalleriesSpecified : Dialog() + data object NoGalleriesSpecified : Dialog() } companion object { diff --git a/app/src/main/java/exh/ui/login/EhLoginActivity.kt b/app/src/main/java/exh/ui/login/EhLoginActivity.kt index 92fd359a1..d1568e8d5 100644 --- a/app/src/main/java/exh/ui/login/EhLoginActivity.kt +++ b/app/src/main/java/exh/ui/login/EhLoginActivity.kt @@ -1,9 +1,7 @@ package exh.ui.login -import android.app.Activity import android.content.Context import android.content.Intent -import android.net.Uri import android.os.Build import android.os.Bundle import android.webkit.CookieManager @@ -13,6 +11,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.core.net.toUri import eu.kanade.presentation.webview.EhLoginWebViewScreen import eu.kanade.presentation.webview.components.IgneousDialog import eu.kanade.tachiyomi.R @@ -21,7 +20,7 @@ import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.view.setComposeContent import exh.log.xLogD -import tachiyomi.domain.UnsortedPreferences +import exh.source.ExhPreferences import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy import java.net.HttpCookie @@ -31,12 +30,12 @@ import java.util.Locale * LoginController */ class EhLoginActivity : BaseActivity() { - private val preferenceManager: UnsortedPreferences by injectLazy() + private val exhPreferences: ExhPreferences by injectLazy() override fun onCreate(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { overrideActivityTransition( - Activity.OVERRIDE_TRANSITION_OPEN, + OVERRIDE_TRANSITION_OPEN, R.anim.shared_axis_x_push_enter, R.anim.shared_axis_x_push_exit, ) @@ -92,7 +91,7 @@ class EhLoginActivity : BaseActivity() { private fun onPageFinished(view: WebView, url: String, customIgneous: String?) { xLogD(url) - val parsedUrl = Uri.parse(url) + val parsedUrl = url.toUri() if (parsedUrl.host.equals("forums.e-hentai.org", ignoreCase = true)) { // Hide distracting content if (!parsedUrl.queryParameterNames.contains(PARAM_SKIP_INJECT)) { @@ -106,7 +105,7 @@ class EhLoginActivity : BaseActivity() { } else if (parsedUrl.host.equals("exhentai.org", ignoreCase = true)) { // At ExHentai, check that everything worked out... if (applyExHentaiCookies(url, customIgneous)) { - preferenceManager.enableExhentai().set(true) + exhPreferences.enableExhentai().set(true) setResult(RESULT_OK) finish() } @@ -155,9 +154,9 @@ class EhLoginActivity : BaseActivity() { if (memberId == null || passHash == null || igneous == null) return false // Update prefs - preferenceManager.memberIdVal().set(memberId!!) - preferenceManager.passHashVal().set(passHash!!) - preferenceManager.igneousVal().set(igneous!!) + exhPreferences.memberIdVal().set(memberId) + exhPreferences.passHashVal().set(passHash) + exhPreferences.igneousVal().set(igneous) return true } @@ -175,7 +174,7 @@ class EhLoginActivity : BaseActivity() { super.finish() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { overrideActivityTransition( - Activity.OVERRIDE_TRANSITION_CLOSE, + OVERRIDE_TRANSITION_CLOSE, R.anim.shared_axis_x_pop_enter, R.anim.shared_axis_x_pop_exit, ) diff --git a/app/src/main/java/mihon/core/migration/migrations/IntegratedHentaiMigration.kt b/app/src/main/java/mihon/core/migration/migrations/IntegratedHentaiMigration.kt index 7bfa5bf9a..14b006672 100644 --- a/app/src/main/java/mihon/core/migration/migrations/IntegratedHentaiMigration.kt +++ b/app/src/main/java/mihon/core/migration/migrations/IntegratedHentaiMigration.kt @@ -1,15 +1,15 @@ package mihon.core.migration.migrations +import exh.source.ExhPreferences import mihon.core.migration.Migration import mihon.core.migration.MigrationContext import tachiyomi.core.common.util.lang.withIOContext -import tachiyomi.domain.UnsortedPreferences class IntegratedHentaiMigration : Migration { override val version: Float = 71f override suspend fun invoke(migrationContext: MigrationContext): Boolean = withIOContext { - val isHentaiEnabled = migrationContext.get()?.isHentaiEnabled() + val isHentaiEnabled = migrationContext.get()?.isHentaiEnabled() ?: return@withIOContext false if (!isHentaiEnabled.isSet() || isHentaiEnabled.get()) { isHentaiEnabled.set(true) diff --git a/app/src/main/res/drawable/list_item_selector_background.xml b/app/src/main/res/drawable/list_item_selector_background.xml deleted file mode 100644 index 26682873a..000000000 --- a/app/src/main/res/drawable/list_item_selector_background.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/migration_source_item.xml b/app/src/main/res/layout/migration_source_item.xml index c90a1eb80..ba006f2d8 100644 --- a/app/src/main/res/layout/migration_source_item.xml +++ b/app/src/main/res/layout/migration_source_item.xml @@ -1,47 +1,53 @@ - + app:cardBackgroundColor="?android:attr/colorBackground" + app:cardElevation="0dp" + app:cardForegroundColor="@color/draggable_card_foreground"> + - + - + - + - + + diff --git a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt index 5f4087a67..cdff58939 100644 --- a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt @@ -99,9 +99,5 @@ class HistoryRepositoryImpl( logcat(LogPriority.ERROR, throwable = e) } } - - override suspend fun getByMangaId(mangaId: Long): List { - return handler.awaitList { historyQueries.getHistoryByMangaId(mangaId, HistoryMapper::mapHistory) } - } // SY <-- } diff --git a/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt b/domain/src/main/java/exh/source/ExhPreferences.kt similarity index 63% rename from domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt rename to domain/src/main/java/exh/source/ExhPreferences.kt index 4ffea3084..55c168055 100644 --- a/domain/src/main/java/tachiyomi/domain/UnsortedPreferences.kt +++ b/domain/src/main/java/exh/source/ExhPreferences.kt @@ -1,10 +1,10 @@ -package tachiyomi.domain +package exh.source import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.domain.release.service.AppUpdatePolicy -class UnsortedPreferences( +class ExhPreferences( private val preferenceStore: PreferenceStore, ) { // KMK --> @@ -17,32 +17,13 @@ class UnsortedPreferences( // KMK <-- // SY --> - - fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE) - - fun defaultMangaOrder() = preferenceStore.getString("default_manga_order", "") - - fun migrationSources() = preferenceStore.getString("migrate_sources", "") - - fun smartMigration() = preferenceStore.getBoolean("smart_migrate", false) - - fun useSourceWithMost() = preferenceStore.getBoolean("use_source_with_most", false) - - fun skipPreMigration() = preferenceStore.getBoolean(Preference.appStateKey("skip_pre_migration"), false) - - fun hideNotFoundMigration() = preferenceStore.getBoolean("hide_not_found_migration", false) - - fun showOnlyUpdatesMigration() = preferenceStore.getBoolean("show_only_updates_migration", false) - - fun recommendationSearchFlags() = preferenceStore.getInt("rec_search_flags", Int.MAX_VALUE) - 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 enableExhentai() = preferenceStore.getBoolean(Preference.Companion.privateKey("enable_exhentai"), false) fun imageQuality() = preferenceStore.getString("ehentai_quality", "auto") @@ -57,15 +38,15 @@ class UnsortedPreferences( fun ehTagWatchingValue() = preferenceStore.getInt("eh_tag_watching_value", 0) // EH Cookies - fun memberIdVal() = preferenceStore.getString(Preference.privateKey("eh_ipb_member_id"), "") + fun memberIdVal() = preferenceStore.getString(Preference.Companion.privateKey("eh_ipb_member_id"), "") - fun passHashVal() = preferenceStore.getString(Preference.privateKey("eh_ipb_pass_hash"), "") - fun igneousVal() = preferenceStore.getString(Preference.privateKey("eh_igneous"), "") - fun ehSettingsProfile() = preferenceStore.getInt(Preference.privateKey("eh_ehSettingsProfile"), -1) - fun exhSettingsProfile() = preferenceStore.getInt(Preference.privateKey("eh_exhSettingsProfile"), -1) - fun exhSettingsKey() = preferenceStore.getString(Preference.privateKey("eh_settingsKey"), "") - fun exhSessionCookie() = preferenceStore.getString(Preference.privateKey("eh_sessionCookie"), "") - fun exhHathPerksCookies() = preferenceStore.getString(Preference.privateKey("eh_hathPerksCookie"), "") + fun passHashVal() = preferenceStore.getString(Preference.Companion.privateKey("eh_ipb_pass_hash"), "") + fun igneousVal() = preferenceStore.getString(Preference.Companion.privateKey("eh_igneous"), "") + fun ehSettingsProfile() = preferenceStore.getInt(Preference.Companion.privateKey("eh_ehSettingsProfile"), -1) + fun exhSettingsProfile() = preferenceStore.getInt(Preference.Companion.privateKey("eh_exhSettingsProfile"), -1) + fun exhSettingsKey() = preferenceStore.getString(Preference.Companion.privateKey("eh_settingsKey"), "") + fun exhSessionCookie() = preferenceStore.getString(Preference.Companion.privateKey("eh_sessionCookie"), "") + fun exhHathPerksCookies() = preferenceStore.getString(Preference.Companion.privateKey("eh_hathPerksCookie"), "") fun exhShowSyncIntro() = preferenceStore.getBoolean("eh_show_sync_intro", true) @@ -81,7 +62,7 @@ class UnsortedPreferences( fun exhAutoUpdateRequirements() = preferenceStore.getStringSet("eh_auto_update_restrictions", emptySet()) - fun exhAutoUpdateStats() = preferenceStore.getString(Preference.appStateKey("eh_auto_update_stats"), "") + fun exhAutoUpdateStats() = preferenceStore.getString(Preference.Companion.appStateKey("eh_auto_update_stats"), "") fun exhWatchedListDefaultState() = preferenceStore.getBoolean("eh_watched_list_default_state", false) @@ -99,13 +80,4 @@ class UnsortedPreferences( ) fun enhancedEHentaiView() = preferenceStore.getBoolean("enhanced_e_hentai_view", true) - - fun preferredMangaDexId() = preferenceStore.getString("preferred_mangaDex_id", "0") - - fun mangadexSyncToLibraryIndexes() = preferenceStore.getStringSet( - "pref_mangadex_sync_to_library_indexes", - emptySet(), - ) - - fun allowLocalSourceHiddenFolders() = preferenceStore.getBoolean("allow_local_source_hidden_folders", false) } diff --git a/domain/src/main/java/tachiyomi/domain/history/interactor/GetHistoryByMangaId.kt b/domain/src/main/java/tachiyomi/domain/history/interactor/GetHistoryByMangaId.kt deleted file mode 100644 index b28427ee5..000000000 --- a/domain/src/main/java/tachiyomi/domain/history/interactor/GetHistoryByMangaId.kt +++ /dev/null @@ -1,13 +0,0 @@ -package tachiyomi.domain.history.interactor - -import tachiyomi.domain.history.model.History -import tachiyomi.domain.history.repository.HistoryRepository - -class GetHistoryByMangaId( - private val repository: HistoryRepository, -) { - - suspend fun await(mangaId: Long): List { - return repository.getByMangaId(mangaId) - } -} diff --git a/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt b/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt index c8a932a7d..0c5a7366f 100644 --- a/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt +++ b/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt @@ -25,7 +25,5 @@ interface HistoryRepository { // SY --> suspend fun upsertHistory(historyUpdates: List) - - suspend fun getByMangaId(mangaId: Long): List // SY <-- }