diff --git a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt index 0caee6f88..45ed21530 100644 --- a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt +++ b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt @@ -9,19 +9,22 @@ import tachiyomi.i18n.MR class BasePreferences( val context: Context, - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun downloadedOnly() = preferenceStore.getBoolean( + val downloadedOnly: Preference = preferenceStore.getBoolean( Preference.appStateKey("pref_downloaded_only"), false, ) - fun incognitoMode() = preferenceStore.getBoolean(Preference.appStateKey("incognito_mode"), false) + val incognitoMode: Preference = preferenceStore.getBoolean(Preference.appStateKey("incognito_mode"), false) - fun extensionInstaller() = ExtensionInstallerPreference(context, preferenceStore) + val extensionInstaller: ExtensionInstallerPreference = ExtensionInstallerPreference(context, preferenceStore) - fun shownOnboardingFlow() = preferenceStore.getBoolean(Preference.appStateKey("onboarding_complete"), false) + val shownOnboardingFlow: Preference = preferenceStore.getBoolean( + Preference.appStateKey("onboarding_complete"), + false, + ) enum class ExtensionInstaller(val titleRes: StringResource, val requiresSystemPermission: Boolean) { LEGACY(MR.strings.ext_installer_legacy, true), @@ -30,11 +33,17 @@ class BasePreferences( PRIVATE(MR.strings.ext_installer_private, false), } - fun displayProfile() = preferenceStore.getString("pref_display_profile_key", "") + val displayProfile: Preference = preferenceStore.getString("pref_display_profile_key", "") - fun hardwareBitmapThreshold() = preferenceStore.getInt("pref_hardware_bitmap_threshold", GLUtil.SAFE_TEXTURE_LIMIT) + val hardwareBitmapThreshold: Preference = preferenceStore.getInt( + "pref_hardware_bitmap_threshold", + GLUtil.SAFE_TEXTURE_LIMIT, + ) - fun alwaysDecodeLongStripWithSSIV() = preferenceStore.getBoolean("pref_always_decode_long_strip_with_ssiv", false) + val alwaysDecodeLongStripWithSSIV: Preference = preferenceStore.getBoolean( + "pref_always_decode_long_strip_with_ssiv", + false, + ) - fun installationId() = preferenceStore.getString(Preference.appStateKey("installation_id"), "") + val installationId: Preference = preferenceStore.getString(Preference.appStateKey("installation_id"), "") } diff --git a/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt b/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt index 346384f04..7bf1eecb3 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt @@ -46,7 +46,7 @@ class SetReadStatus( return@withNonCancellableContext Result.InternalError(e) } - if (read && downloadPreferences.removeAfterMarkedAsRead().get()) { + if (read && downloadPreferences.removeAfterMarkedAsRead.get()) { chaptersToUpdate .groupBy { it.mangaId } .forEach { (mangaId, chapters) -> diff --git a/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt b/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt index 20ecb2493..94f629653 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt @@ -171,7 +171,7 @@ class SyncChaptersWithSource( val deletedChapterNumberDateFetchMap = removedChapters.sortedByDescending { it.dateFetch } .associate { it.chapterNumber to it.dateFetch } - val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead().get() + val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead.get() .contains(LibraryPreferences.MARK_DUPLICATE_CHAPTER_READ_NEW) // Date fetch is set in such a way that the upper ones will have bigger value than the lower ones diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionLanguages.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionLanguages.kt index 968cfbabe..c155af248 100644 --- a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionLanguages.kt +++ b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionLanguages.kt @@ -12,7 +12,7 @@ class GetExtensionLanguages( ) { fun subscribe(): Flow> { return combine( - preferences.enabledLanguages().changes(), + preferences.enabledLanguages.changes(), extensionManager.availableExtensionsFlow, ) { enabledLanguage, availableExtensions -> availableExtensions diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionSources.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionSources.kt index 7c7a6a919..76d2abe01 100644 --- a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionSources.kt +++ b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionSources.kt @@ -15,7 +15,7 @@ class GetExtensionSources( val isMultiLangSingleSource = isMultiSource && extension.sources.map { it.name }.distinct().size == 1 - return preferences.disabledSources().changes().map { disabledSources -> + return preferences.disabledSources.changes().map { disabledSources -> fun Source.isEnabled() = id.toString() !in disabledSources extension.sources diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionsByType.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionsByType.kt index 489403407..c2bfd49f8 100644 --- a/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionsByType.kt +++ b/app/src/main/java/eu/kanade/domain/extension/interactor/GetExtensionsByType.kt @@ -13,10 +13,10 @@ class GetExtensionsByType( ) { fun subscribe(): Flow { - val showNsfwSources = preferences.showNsfwSource().get() + val showNsfwSources = preferences.showNsfwSource.get() return combine( - preferences.enabledLanguages().changes(), + preferences.enabledLanguages.changes(), extensionManager.installedExtensionsFlow, extensionManager.untrustedExtensionsFlow, extensionManager.availableExtensionsFlow, diff --git a/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt b/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt index b4259945d..40871be05 100644 --- a/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt +++ b/app/src/main/java/eu/kanade/domain/extension/interactor/TrustExtension.kt @@ -14,11 +14,11 @@ class TrustExtension( suspend fun isTrusted(pkgInfo: PackageInfo, fingerprints: List): Boolean { val trustedFingerprints = extensionRepoRepository.getAll().map { it.signingKeyFingerprint }.toHashSet() val key = "${pkgInfo.packageName}:${PackageInfoCompat.getLongVersionCode(pkgInfo)}:${fingerprints.last()}" - return trustedFingerprints.any { fingerprints.contains(it) } || key in preferences.trustedExtensions().get() + return trustedFingerprints.any { fingerprints.contains(it) } || key in preferences.trustedExtensions.get() } fun trust(pkgName: String, versionCode: Long, signatureHash: String) { - preferences.trustedExtensions().getAndSet { exts -> + preferences.trustedExtensions.getAndSet { exts -> // Remove previously trusted versions val removed = exts.filterNot { it.startsWith("$pkgName:") }.toMutableSet() @@ -27,6 +27,6 @@ class TrustExtension( } fun revokeAll() { - preferences.trustedExtensions().delete() + preferences.trustedExtensions.delete() } } diff --git a/app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt b/app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt index 7117e07af..52bce0fc3 100644 --- a/app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt +++ b/app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt @@ -44,7 +44,7 @@ class UpdateManga( // if the manga isn't a favorite (or 'update titles' preference is enabled), set its title from source and update in db val title = - if (remoteTitle.isNotEmpty() && (!localManga.favorite || libraryPreferences.updateMangaTitles().get())) { + if (remoteTitle.isNotEmpty() && (!localManga.favorite || libraryPreferences.updateMangaTitles.get())) { remoteTitle } else { null diff --git a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt index 610a83bdb..2109d5191 100644 --- a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt +++ b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt @@ -22,7 +22,7 @@ val Manga.readerOrientation: Long val Manga.downloadedFilter: TriState get() { - if (Injekt.get().downloadedOnly().get()) return TriState.ENABLED_IS + if (Injekt.get().downloadedOnly.get()) return TriState.ENABLED_IS return when (downloadedFilterRaw) { Manga.CHAPTER_SHOW_DOWNLOADED -> TriState.ENABLED_IS Manga.CHAPTER_SHOW_NOT_DOWNLOADED -> TriState.ENABLED_NOT diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt index 046d5055d..104897c62 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt @@ -17,10 +17,10 @@ class GetEnabledSources( fun subscribe(): Flow> { return combine( - preferences.pinnedSources().changes(), - preferences.enabledLanguages().changes(), - preferences.disabledSources().changes(), - preferences.lastUsedSource().changes(), + preferences.pinnedSources.changes(), + preferences.enabledLanguages.changes(), + preferences.disabledSources.changes(), + preferences.lastUsedSource.changes(), repository.getSources(), ) { pinnedSourceIds, enabledLanguages, disabledSources, lastUsedSource, sources -> sources diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt index 41ab65f30..d39a5ad5f 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetIncognitoState.kt @@ -13,19 +13,19 @@ class GetIncognitoState( private val extensionManager: ExtensionManager, ) { fun await(sourceId: Long?): Boolean { - if (basePreferences.incognitoMode().get()) return true + if (basePreferences.incognitoMode.get()) return true if (sourceId == null) return false val extensionPackage = extensionManager.getExtensionPackage(sourceId) ?: return false - return extensionPackage in sourcePreferences.incognitoExtensions().get() + return extensionPackage in sourcePreferences.incognitoExtensions.get() } fun subscribe(sourceId: Long?): Flow { - if (sourceId == null) return basePreferences.incognitoMode().changes() + if (sourceId == null) return basePreferences.incognitoMode.changes() return combine( - basePreferences.incognitoMode().changes(), - sourcePreferences.incognitoExtensions().changes(), + basePreferences.incognitoMode.changes(), + sourcePreferences.incognitoExtensions.changes(), extensionManager.getExtensionPackageAsFlow(sourceId), ) { incognito, incognitoExtensions, extensionPackage -> incognito || (extensionPackage in incognitoExtensions) diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetLanguagesWithSources.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetLanguagesWithSources.kt index 9fc927d4e..69587a4c5 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetLanguagesWithSources.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetLanguagesWithSources.kt @@ -15,8 +15,8 @@ class GetLanguagesWithSources( fun subscribe(): Flow>> { return combine( - preferences.enabledLanguages().changes(), - preferences.disabledSources().changes(), + preferences.enabledLanguages.changes(), + preferences.disabledSources.changes(), repository.getOnlineSources(), ) { enabledLanguage, disabledSource, onlineSources -> val sortedSources = onlineSources.sortedWith( diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt b/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt index 962fbb8a6..cb6debd7e 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/GetSourcesWithFavoriteCount.kt @@ -16,8 +16,8 @@ class GetSourcesWithFavoriteCount( fun subscribe(): Flow>> { return combine( - preferences.migrationSortingDirection().changes(), - preferences.migrationSortingMode().changes(), + preferences.migrationSortingDirection.changes(), + preferences.migrationSortingMode.changes(), repository.getSourcesWithFavoriteCount(), ) { direction, mode, list -> list diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/SetMigrateSorting.kt b/app/src/main/java/eu/kanade/domain/source/interactor/SetMigrateSorting.kt index 4e4ae4bdd..9a5e08177 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/SetMigrateSorting.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/SetMigrateSorting.kt @@ -7,8 +7,8 @@ class SetMigrateSorting( ) { fun await(mode: Mode, direction: Direction) { - preferences.migrationSortingMode().set(mode) - preferences.migrationSortingDirection().set(direction) + preferences.migrationSortingMode.set(mode) + preferences.migrationSortingDirection.set(direction) } enum class Mode { diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleIncognito.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleIncognito.kt index ccd13bf6a..7816171ea 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleIncognito.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleIncognito.kt @@ -7,7 +7,7 @@ class ToggleIncognito( private val preferences: SourcePreferences, ) { fun await(extensions: String, enable: Boolean) { - preferences.incognitoExtensions().getAndSet { + preferences.incognitoExtensions.getAndSet { if (enable) it.plus(extensions) else it.minus(extensions) } } diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt index c813890d2..6af4d0085 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleLanguage.kt @@ -8,8 +8,8 @@ class ToggleLanguage( ) { fun await(language: String) { - val isEnabled = language in preferences.enabledLanguages().get() - preferences.enabledLanguages().getAndSet { enabled -> + val isEnabled = language in preferences.enabledLanguages.get() + preferences.enabledLanguages.getAndSet { enabled -> if (isEnabled) enabled.minus(language) else enabled.plus(language) } } diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt index ec13f8d4b..5a2b6be0f 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSource.kt @@ -13,19 +13,19 @@ class ToggleSource( } fun await(sourceId: Long, enable: Boolean = isEnabled(sourceId)) { - preferences.disabledSources().getAndSet { disabled -> + preferences.disabledSources.getAndSet { disabled -> if (enable) disabled.minus("$sourceId") else disabled.plus("$sourceId") } } fun await(sourceIds: List, enable: Boolean) { val transformedSourceIds = sourceIds.map { it.toString() } - preferences.disabledSources().getAndSet { disabled -> + preferences.disabledSources.getAndSet { disabled -> if (enable) disabled.minus(transformedSourceIds) else disabled.plus(transformedSourceIds) } } private fun isEnabled(sourceId: Long): Boolean { - return sourceId.toString() in preferences.disabledSources().get() + return sourceId.toString() in preferences.disabledSources.get() } } diff --git a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt index 0a49a53ba..e9fbfd1bc 100644 --- a/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt +++ b/app/src/main/java/eu/kanade/domain/source/interactor/ToggleSourcePin.kt @@ -9,8 +9,8 @@ class ToggleSourcePin( ) { fun await(source: Source) { - val isPinned = source.id.toString() in preferences.pinnedSources().get() - preferences.pinnedSources().getAndSet { pinned -> + val isPinned = source.id.toString() in preferences.pinnedSources.get() + preferences.pinnedSources.getAndSet { pinned -> if (isPinned) pinned.minus("${source.id}") else pinned.plus("${source.id}") } } 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 8bb574893..d861014ea 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 @@ -10,68 +10,80 @@ import tachiyomi.core.common.preference.getLongArray import tachiyomi.domain.library.model.LibraryDisplayMode class SourcePreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun sourceDisplayMode() = preferenceStore.getObjectFromString( + val sourceDisplayMode: Preference = preferenceStore.getObjectFromString( "pref_display_mode_catalogue", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize, ) - fun enabledLanguages() = preferenceStore.getStringSet("source_languages", LocaleHelper.getDefaultEnabledLanguages()) + val enabledLanguages: Preference> = preferenceStore.getStringSet( + "source_languages", + LocaleHelper.getDefaultEnabledLanguages(), + ) - fun disabledSources() = preferenceStore.getStringSet("hidden_catalogues", emptySet()) + val disabledSources: Preference> = preferenceStore.getStringSet("hidden_catalogues", emptySet()) - fun incognitoExtensions() = preferenceStore.getStringSet("incognito_extensions", emptySet()) + val incognitoExtensions: Preference> = preferenceStore.getStringSet("incognito_extensions", emptySet()) - fun pinnedSources() = preferenceStore.getStringSet("pinned_catalogues", emptySet()) + val pinnedSources: Preference> = preferenceStore.getStringSet("pinned_catalogues", emptySet()) - fun lastUsedSource() = preferenceStore.getLong( + val lastUsedSource: Preference = preferenceStore.getLong( Preference.appStateKey("last_catalogue_source"), -1, ) - fun showNsfwSource() = preferenceStore.getBoolean("show_nsfw_source", true) + val showNsfwSource: Preference = preferenceStore.getBoolean("show_nsfw_source", true) - fun migrationSortingMode() = preferenceStore.getEnum("pref_migration_sorting", SetMigrateSorting.Mode.ALPHABETICAL) + val migrationSortingMode: Preference = preferenceStore.getEnum( + "pref_migration_sorting", + SetMigrateSorting.Mode.ALPHABETICAL, + ) - fun migrationSortingDirection() = preferenceStore.getEnum( + val migrationSortingDirection: Preference = preferenceStore.getEnum( "pref_migration_direction", SetMigrateSorting.Direction.ASCENDING, ) - fun hideInLibraryItems() = preferenceStore.getBoolean("browse_hide_in_library_items", false) + val hideInLibraryItems: Preference = preferenceStore.getBoolean("browse_hide_in_library_items", false) - fun extensionRepos() = preferenceStore.getStringSet("extension_repos", emptySet()) + val extensionRepos: Preference> = preferenceStore.getStringSet("extension_repos", emptySet()) - fun extensionUpdatesCount() = preferenceStore.getInt("ext_updates_count", 0) + val extensionUpdatesCount: Preference = preferenceStore.getInt("ext_updates_count", 0) - fun trustedExtensions() = preferenceStore.getStringSet( + val trustedExtensions: Preference> = preferenceStore.getStringSet( Preference.appStateKey("trusted_extensions"), emptySet(), ) - fun globalSearchFilterState() = preferenceStore.getBoolean( + val globalSearchFilterState: Preference = preferenceStore.getBoolean( Preference.appStateKey("has_filters_toggle_state"), false, ) - fun migrationSources() = preferenceStore.getLongArray("migration_sources", emptyList()) + val migrationSources: Preference> = preferenceStore.getLongArray("migration_sources", emptyList()) - fun migrationFlags() = preferenceStore.getObjectFromInt( + val migrationFlags: Preference> = preferenceStore.getObjectFromInt( key = "migration_flags", defaultValue = MigrationFlag.entries.toSet(), serializer = { MigrationFlag.toBit(it) }, deserializer = { value: Int -> MigrationFlag.fromBit(value) }, ) - fun migrationDeepSearchMode() = preferenceStore.getBoolean("migration_deep_search", false) + val migrationDeepSearchMode: Preference = preferenceStore.getBoolean("migration_deep_search", false) - fun migrationPrioritizeByChapters() = preferenceStore.getBoolean("migration_prioritize_by_chapters", false) + val migrationPrioritizeByChapters: Preference = preferenceStore.getBoolean( + "migration_prioritize_by_chapters", + false, + ) - fun migrationHideUnmatched() = preferenceStore.getBoolean("migration_hide_unmatched", false) + val migrationHideUnmatched: Preference = preferenceStore.getBoolean("migration_hide_unmatched", false) - fun migrationHideWithoutUpdates() = preferenceStore.getBoolean("migration_hide_without_updates", false) + val migrationHideWithoutUpdates: Preference = preferenceStore.getBoolean( + "migration_hide_without_updates", + false, + ) } diff --git a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt index d07bc715d..032036b4a 100644 --- a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt +++ b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt @@ -34,11 +34,11 @@ class TrackPreferences( fun trackToken(tracker: Tracker) = preferenceStore.getString(Preference.privateKey("track_token_${tracker.id}"), "") - fun anilistScoreType() = preferenceStore.getString("anilist_score_type", Anilist.POINT_10) + val anilistScoreType: Preference = preferenceStore.getString("anilist_score_type", Anilist.POINT_10) - fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) + val autoUpdateTrack: Preference = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) - fun autoUpdateTrackOnMarkRead() = preferenceStore.getEnum( + val autoUpdateTrackOnMarkRead: Preference = preferenceStore.getEnum( "pref_auto_update_manga_on_mark_read", AutoTrackState.ALWAYS, ) diff --git a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt index 8d23145e6..84e405dee 100644 --- a/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt +++ b/app/src/main/java/eu/kanade/domain/ui/UiPreferences.kt @@ -5,6 +5,7 @@ import eu.kanade.domain.ui.model.TabletUiMode import eu.kanade.domain.ui.model.ThemeMode import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable +import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.preference.getEnum import java.time.format.DateTimeFormatter @@ -12,12 +13,12 @@ import java.time.format.FormatStyle import java.util.Locale class UiPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun themeMode() = preferenceStore.getEnum("pref_theme_mode_key", ThemeMode.SYSTEM) + val themeMode: Preference = preferenceStore.getEnum("pref_theme_mode_key", ThemeMode.SYSTEM) - fun appTheme() = preferenceStore.getEnum( + val appTheme: Preference = preferenceStore.getEnum( "pref_app_theme", if (DeviceUtil.isDynamicColorAvailable) { AppTheme.MONET @@ -26,15 +27,15 @@ class UiPreferences( }, ) - fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false) + val themeDarkAmoled: Preference = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false) - fun relativeTime() = preferenceStore.getBoolean("relative_time_v2", true) + val relativeTime: Preference = preferenceStore.getBoolean("relative_time_v2", true) - fun dateFormat() = preferenceStore.getString("app_date_format", "") + val dateFormat: Preference = preferenceStore.getString("app_date_format", "") - fun tabletUiMode() = preferenceStore.getEnum("tablet_ui_mode", TabletUiMode.AUTOMATIC) + val tabletUiMode: Preference = preferenceStore.getEnum("tablet_ui_mode", TabletUiMode.AUTOMATIC) - fun imagesInDescription() = preferenceStore.getBoolean("pref_render_images_description", true) + val imagesInDescription: Preference = preferenceStore.getBoolean("pref_render_images_description", true) companion object { fun dateFormat(format: String): DateTimeFormatter = when (format) { diff --git a/app/src/main/java/eu/kanade/presentation/components/DateText.kt b/app/src/main/java/eu/kanade/presentation/components/DateText.kt index 0e22dcc35..d041695ba 100644 --- a/app/src/main/java/eu/kanade/presentation/components/DateText.kt +++ b/app/src/main/java/eu/kanade/presentation/components/DateText.kt @@ -33,8 +33,8 @@ fun relativeDateText( val context = LocalContext.current val preferences = remember { Injekt.get() } - val relativeTime = remember { preferences.relativeTime().get() } - val dateFormat = remember { UiPreferences.dateFormat(preferences.dateFormat().get()) } + val relativeTime = remember { preferences.relativeTime.get() } + val dateFormat = remember { UiPreferences.dateFormat(preferences.dateFormat.get()) } return localDate?.toRelativeString( context = context, diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt index 4d7378356..5405ff000 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt @@ -78,9 +78,9 @@ fun LibrarySettingsDialog( private fun ColumnScope.FilterPage( screenModel: LibrarySettingsScreenModel, ) { - val filterDownloaded by screenModel.libraryPreferences.filterDownloaded().collectAsState() - val downloadedOnly by screenModel.preferences.downloadedOnly().collectAsState() - val autoUpdateMangaRestrictions by screenModel.libraryPreferences.autoUpdateMangaRestrictions().collectAsState() + val filterDownloaded by screenModel.libraryPreferences.filterDownloaded.collectAsState() + val downloadedOnly by screenModel.preferences.downloadedOnly.collectAsState() + val autoUpdateMangaRestrictions by screenModel.libraryPreferences.autoUpdateMangaRestrictions.collectAsState() TriStateItem( label = stringResource(MR.strings.label_downloaded), @@ -92,25 +92,25 @@ private fun ColumnScope.FilterPage( enabled = !downloadedOnly, onClick = { screenModel.toggleFilter(LibraryPreferences::filterDownloaded) }, ) - val filterUnread by screenModel.libraryPreferences.filterUnread().collectAsState() + val filterUnread by screenModel.libraryPreferences.filterUnread.collectAsState() TriStateItem( label = stringResource(MR.strings.action_filter_unread), state = filterUnread, onClick = { screenModel.toggleFilter(LibraryPreferences::filterUnread) }, ) - val filterStarted by screenModel.libraryPreferences.filterStarted().collectAsState() + val filterStarted by screenModel.libraryPreferences.filterStarted.collectAsState() TriStateItem( label = stringResource(MR.strings.label_started), state = filterStarted, onClick = { screenModel.toggleFilter(LibraryPreferences::filterStarted) }, ) - val filterBookmarked by screenModel.libraryPreferences.filterBookmarked().collectAsState() + val filterBookmarked by screenModel.libraryPreferences.filterBookmarked.collectAsState() TriStateItem( label = stringResource(MR.strings.action_filter_bookmarked), state = filterBookmarked, onClick = { screenModel.toggleFilter(LibraryPreferences::filterBookmarked) }, ) - val filterCompleted by screenModel.libraryPreferences.filterCompleted().collectAsState() + val filterCompleted by screenModel.libraryPreferences.filterCompleted.collectAsState() TriStateItem( label = stringResource(MR.strings.completed), state = filterCompleted, @@ -118,7 +118,7 @@ private fun ColumnScope.FilterPage( ) // TODO: re-enable when custom intervals are ready for stable if ((!isReleaseBuildType) && LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in autoUpdateMangaRestrictions) { - val filterIntervalCustom by screenModel.libraryPreferences.filterIntervalCustom().collectAsState() + val filterIntervalCustom by screenModel.libraryPreferences.filterIntervalCustom.collectAsState() TriStateItem( label = stringResource(MR.strings.action_filter_interval_custom), state = filterIntervalCustom, @@ -229,7 +229,7 @@ private val displayModes = listOf( private fun ColumnScope.DisplayPage( screenModel: LibrarySettingsScreenModel, ) { - val displayMode by screenModel.libraryPreferences.displayMode().collectAsState() + val displayMode by screenModel.libraryPreferences.displayMode.collectAsState() SettingsChipRow(MR.strings.action_display_mode) { displayModes.map { (titleRes, mode) -> FilterChip( @@ -244,9 +244,9 @@ private fun ColumnScope.DisplayPage( val configuration = LocalConfiguration.current val columnPreference = remember { if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { - screenModel.libraryPreferences.landscapeColumns() + screenModel.libraryPreferences.landscapeColumns } else { - screenModel.libraryPreferences.portraitColumns() + screenModel.libraryPreferences.portraitColumns } } @@ -268,32 +268,32 @@ private fun ColumnScope.DisplayPage( HeadingItem(MR.strings.overlay_header) CheckboxItem( label = stringResource(MR.strings.action_display_download_badge), - pref = screenModel.libraryPreferences.downloadBadge(), + pref = screenModel.libraryPreferences.downloadBadge, ) CheckboxItem( label = stringResource(MR.strings.action_display_unread_badge), - pref = screenModel.libraryPreferences.unreadBadge(), + pref = screenModel.libraryPreferences.unreadBadge, ) CheckboxItem( label = stringResource(MR.strings.action_display_local_badge), - pref = screenModel.libraryPreferences.localBadge(), + pref = screenModel.libraryPreferences.localBadge, ) CheckboxItem( label = stringResource(MR.strings.action_display_language_badge), - pref = screenModel.libraryPreferences.languageBadge(), + pref = screenModel.libraryPreferences.languageBadge, ) CheckboxItem( label = stringResource(MR.strings.action_display_show_continue_reading_button), - pref = screenModel.libraryPreferences.showContinueReadingButton(), + pref = screenModel.libraryPreferences.showContinueReadingButton, ) HeadingItem(MR.strings.tabs_header) CheckboxItem( label = stringResource(MR.strings.action_display_show_tabs), - pref = screenModel.libraryPreferences.categoryTabs(), + pref = screenModel.libraryPreferences.categoryTabs, ) CheckboxItem( label = stringResource(MR.strings.action_display_show_number_of_items), - pref = screenModel.libraryPreferences.categoryNumberOfItems(), + pref = screenModel.libraryPreferences.categoryNumberOfItems, ) } diff --git a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt index 9af282179..074b5664d 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt @@ -66,7 +66,7 @@ fun ChapterSettingsDialog( ) } - val downloadedOnly = remember { Injekt.get().downloadedOnly().get() } + val downloadedOnly = remember { Injekt.get().downloadedOnly.get() } TabbedDialog( onDismissRequest = onDismissRequest, diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt index 6183ce4c7..03388abfe 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt @@ -618,7 +618,7 @@ private fun MangaSummary( modifier: Modifier = Modifier, ) { val preferences = remember { Injekt.get() } - val loadImages = remember { preferences.imagesInDescription().get() } + val loadImages = remember { preferences.imagesInDescription.get() } val animProgress by animateFloatAsState( targetValue = if (expanded) 1f else 0f, label = "summary", diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt index ff4285ff4..f23bce683 100644 --- a/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt +++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/PermissionStep.kt @@ -125,7 +125,7 @@ internal class PermissionStep : OnboardingStep { color = MaterialTheme.colorScheme.onPrimaryContainer, ) - val crashlyticsPref = privacyPreferences.crashlytics() + val crashlyticsPref = privacyPreferences.crashlytics val crashlytics by crashlyticsPref.collectAsState() PermissionSwitch( title = stringResource(MR.strings.onboarding_permission_crashlytics), @@ -134,7 +134,7 @@ internal class PermissionStep : OnboardingStep { onToggleChange = crashlyticsPref::set, ) - val analyticsPref = privacyPreferences.analytics() + val analyticsPref = privacyPreferences.analytics val analytics by analyticsPref.collectAsState() PermissionSwitch( title = stringResource(MR.strings.onboarding_permission_analytics), diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/StorageStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/StorageStep.kt index 4b6409746..0abef4c08 100644 --- a/app/src/main/java/eu/kanade/presentation/more/onboarding/StorageStep.kt +++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/StorageStep.kt @@ -30,7 +30,7 @@ import uy.kohesive.injekt.api.get internal class StorageStep : OnboardingStep { - private val storagePref = Injekt.get().baseStorageDirectory() + private val storagePref = Injekt.get().baseStorageDirectory private var _isComplete by mutableStateOf(false) diff --git a/app/src/main/java/eu/kanade/presentation/more/onboarding/ThemeStep.kt b/app/src/main/java/eu/kanade/presentation/more/onboarding/ThemeStep.kt index dfd7517dc..8fb18a4e8 100644 --- a/app/src/main/java/eu/kanade/presentation/more/onboarding/ThemeStep.kt +++ b/app/src/main/java/eu/kanade/presentation/more/onboarding/ThemeStep.kt @@ -19,13 +19,13 @@ internal class ThemeStep : OnboardingStep { @Composable override fun Content() { - val themeModePref = uiPreferences.themeMode() + val themeModePref = uiPreferences.themeMode val themeMode by themeModePref.collectAsState() - val appThemePref = uiPreferences.appTheme() + val appThemePref = uiPreferences.appTheme val appTheme by appThemePref.collectAsState() - val amoledPref = uiPreferences.themeDarkAmoled() + val amoledPref = uiPreferences.themeDarkAmoled val amoled by amoledPref.collectAsState() Column { 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 6a31ca7d7..d57f7d250 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 @@ -99,7 +99,7 @@ object SettingsAdvancedScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = networkPreferences.verboseLogging(), + preference = networkPreferences.verboseLogging, title = stringResource(MR.strings.pref_verbose_logging), subtitle = stringResource(MR.strings.pref_verbose_logging_summary), onValueChanged = { @@ -207,7 +207,7 @@ object SettingsAdvancedScreen : SearchableSettings { val context = LocalContext.current val networkHelper = remember { Injekt.get() } - val userAgentPref = networkPreferences.defaultUserAgent() + val userAgentPref = networkPreferences.defaultUserAgent val userAgent by userAgentPref.collectAsState() return Preference.PreferenceGroup( @@ -241,7 +241,7 @@ object SettingsAdvancedScreen : SearchableSettings { }, ), Preference.PreferenceItem.ListPreference( - preference = networkPreferences.dohProvider(), + preference = networkPreferences.dohProvider, entries = persistentMapOf( -1 to stringResource(MR.strings.disabled), PREF_DOH_CLOUDFLARE to "Cloudflare", @@ -322,12 +322,12 @@ object SettingsAdvancedScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.updateMangaTitles(), + preference = libraryPreferences.updateMangaTitles, title = stringResource(MR.strings.pref_update_library_manga_titles), subtitle = stringResource(MR.strings.pref_update_library_manga_titles_summary), ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.disallowNonAsciiFilenames(), + preference = libraryPreferences.disallowNonAsciiFilenames, title = stringResource(MR.strings.pref_disallow_non_ascii_filenames), subtitle = stringResource(MR.strings.pref_disallow_non_ascii_filenames_details), ), @@ -346,14 +346,14 @@ object SettingsAdvancedScreen : SearchableSettings { uri?.let { val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION context.contentResolver.takePersistableUriPermission(uri, flags) - basePreferences.displayProfile().set(uri.toString()) + basePreferences.displayProfile.set(uri.toString()) } } return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_reader), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - preference = basePreferences.hardwareBitmapThreshold(), + preference = basePreferences.hardwareBitmapThreshold, entries = GLUtil.CUSTOM_TEXTURE_LIMIT_OPTIONS .mapIndexed { index, option -> val display = if (index == 0) { @@ -373,13 +373,13 @@ object SettingsAdvancedScreen : SearchableSettings { GLUtil.DEVICE_TEXTURE_LIMIT > GLUtil.SAFE_TEXTURE_LIMIT, ), Preference.PreferenceItem.SwitchPreference( - preference = basePreferences.alwaysDecodeLongStripWithSSIV(), + preference = basePreferences.alwaysDecodeLongStripWithSSIV, title = stringResource(MR.strings.pref_always_decode_long_strip_with_ssiv_2), subtitle = stringResource(MR.strings.pref_always_decode_long_strip_with_ssiv_summary), ), Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_display_profile), - subtitle = basePreferences.displayProfile().get(), + subtitle = basePreferences.displayProfile.get(), onClick = { chooseColorProfile.launch(arrayOf("*/*")) }, @@ -394,7 +394,7 @@ object SettingsAdvancedScreen : SearchableSettings { ): Preference.PreferenceGroup { val context = LocalContext.current val uriHandler = LocalUriHandler.current - val extensionInstallerPref = basePreferences.extensionInstaller() + val extensionInstallerPref = basePreferences.extensionInstaller var shizukuMissing by rememberSaveable { mutableStateOf(false) } val trustExtension = remember { Injekt.get() } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt index 1798f3614..a29cdcf48 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt @@ -50,13 +50,13 @@ object SettingsAppearanceScreen : SearchableSettings { ): Preference.PreferenceGroup { val context = LocalContext.current - val themeModePref = uiPreferences.themeMode() + val themeModePref = uiPreferences.themeMode val themeMode by themeModePref.collectAsState() - val appThemePref = uiPreferences.appTheme() + val appThemePref = uiPreferences.appTheme val appTheme by appThemePref.collectAsState() - val amoledPref = uiPreferences.themeDarkAmoled() + val amoledPref = uiPreferences.themeDarkAmoled val amoled by amoledPref.collectAsState() return Preference.PreferenceGroup( @@ -103,7 +103,7 @@ object SettingsAppearanceScreen : SearchableSettings { val now = remember { LocalDate.now() } - val dateFormat by uiPreferences.dateFormat().collectAsState() + val dateFormat by uiPreferences.dateFormat.collectAsState() val formattedNow = remember(dateFormat) { UiPreferences.dateFormat(dateFormat).format(now) } @@ -116,7 +116,7 @@ object SettingsAppearanceScreen : SearchableSettings { onClick = { navigator.push(AppLanguageScreen()) }, ), Preference.PreferenceItem.ListPreference( - preference = uiPreferences.tabletUiMode(), + preference = uiPreferences.tabletUiMode, entries = TabletUiMode.entries .associateWith { stringResource(it.titleRes) } .toImmutableMap(), @@ -127,7 +127,7 @@ object SettingsAppearanceScreen : SearchableSettings { }, ), Preference.PreferenceItem.ListPreference( - preference = uiPreferences.dateFormat(), + preference = uiPreferences.dateFormat, entries = DateFormats .associateWith { val formattedDate = UiPreferences.dateFormat(it).format(now) @@ -137,7 +137,7 @@ object SettingsAppearanceScreen : SearchableSettings { title = stringResource(MR.strings.pref_date_format), ), Preference.PreferenceItem.SwitchPreference( - preference = uiPreferences.relativeTime(), + preference = uiPreferences.relativeTime, title = stringResource(MR.strings.pref_relative_format), subtitle = stringResource( MR.strings.pref_relative_format_summary, @@ -146,7 +146,7 @@ object SettingsAppearanceScreen : SearchableSettings { ), ), Preference.PreferenceItem.SwitchPreference( - preference = uiPreferences.imagesInDescription(), + preference = uiPreferences.imagesInDescription, title = stringResource(MR.strings.pref_display_images_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 6baeda597..25e2b384a 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 @@ -43,7 +43,7 @@ object SettingsBrowseScreen : SearchableSettings { title = stringResource(MR.strings.label_sources), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = sourcePreferences.hideInLibraryItems(), + preference = sourcePreferences.hideInLibraryItems, title = stringResource(MR.strings.pref_hide_in_library_items), ), Preference.PreferenceItem.TextPreference( @@ -59,7 +59,7 @@ object SettingsBrowseScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_nsfw_content), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = sourcePreferences.showNsfwSource(), + preference = sourcePreferences.showNsfwSource, title = stringResource(MR.strings.pref_show_nsfw_source), subtitle = stringResource(MR.strings.requires_app_restart), onValueChanged = { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt index d1d3e5ff4..0d541d3ed 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt @@ -167,11 +167,11 @@ object SettingsDataScreen : SearchableSettings { storagePreferences: StoragePreferences, ): Preference.PreferenceItem.TextPreference { val context = LocalContext.current - val pickStorageLocation = storageLocationPicker(storagePreferences.baseStorageDirectory()) + val pickStorageLocation = storageLocationPicker(storagePreferences.baseStorageDirectory) return Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_storage_location), - subtitle = storageLocationText(storagePreferences.baseStorageDirectory()), + subtitle = storageLocationText(storagePreferences.baseStorageDirectory), onClick = { try { pickStorageLocation.launch(null) @@ -187,7 +187,7 @@ object SettingsDataScreen : SearchableSettings { val context = LocalContext.current val navigator = LocalNavigator.currentOrThrow - val lastAutoBackup by backupPreferences.lastAutoBackupTimestamp().collectAsState() + val lastAutoBackup by backupPreferences.lastAutoBackupTimestamp.collectAsState() val chooseBackup = rememberLauncherForActivityResult( object : ActivityResultContracts.GetContent() { @@ -254,7 +254,7 @@ object SettingsDataScreen : SearchableSettings { // Automatic backups Preference.PreferenceItem.ListPreference( - preference = backupPreferences.backupInterval(), + preference = backupPreferences.backupInterval, entries = persistentMapOf( 0 to stringResource(MR.strings.off), 6 to stringResource(MR.strings.update_6hour), @@ -324,7 +324,7 @@ object SettingsDataScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.autoClearChapterCache(), + preference = libraryPreferences.autoClearChapterCache, title = stringResource(MR.strings.pref_auto_clear_chapter_cache), ), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt index f66e40e27..17b34e2ef 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt @@ -37,19 +37,19 @@ object SettingsDownloadScreen : SearchableSettings { val allCategories by getCategories.subscribe().collectAsState(initial = emptyList()) val downloadPreferences = remember { Injekt.get() } - val parallelSourceLimit by downloadPreferences.parallelSourceLimit().collectAsState() - val parallelPageLimit by downloadPreferences.parallelPageLimit().collectAsState() + val parallelSourceLimit by downloadPreferences.parallelSourceLimit.collectAsState() + val parallelPageLimit by downloadPreferences.parallelPageLimit.collectAsState() return listOf( Preference.PreferenceItem.SwitchPreference( - preference = downloadPreferences.downloadOnlyOverWifi(), + preference = downloadPreferences.downloadOnlyOverWifi, title = stringResource(MR.strings.connected_to_wifi), ), Preference.PreferenceItem.SwitchPreference( - preference = downloadPreferences.saveChaptersAsCBZ(), + preference = downloadPreferences.saveChaptersAsCBZ, title = stringResource(MR.strings.save_chapter_as_cbz), ), Preference.PreferenceItem.SwitchPreference( - preference = downloadPreferences.splitTallImages(), + preference = downloadPreferences.splitTallImages, title = stringResource(MR.strings.split_tall_images), subtitle = stringResource(MR.strings.split_tall_images_summary), ), @@ -57,14 +57,14 @@ object SettingsDownloadScreen : SearchableSettings { value = parallelSourceLimit, valueRange = 1..10, title = stringResource(MR.strings.pref_download_concurrent_sources), - onValueChanged = { downloadPreferences.parallelSourceLimit().set(it) }, + onValueChanged = { downloadPreferences.parallelSourceLimit.set(it) }, ), Preference.PreferenceItem.SliderPreference( value = parallelPageLimit, valueRange = 1..15, title = stringResource(MR.strings.pref_download_concurrent_pages), subtitle = stringResource(MR.strings.pref_download_concurrent_pages_summary), - onValueChanged = { downloadPreferences.parallelPageLimit().set(it) }, + onValueChanged = { downloadPreferences.parallelPageLimit.set(it) }, ), getDeleteChaptersGroup( downloadPreferences = downloadPreferences, @@ -87,11 +87,11 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_delete_chapters), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = downloadPreferences.removeAfterMarkedAsRead(), + preference = downloadPreferences.removeAfterMarkedAsRead, title = stringResource(MR.strings.pref_remove_after_marked_as_read), ), Preference.PreferenceItem.ListPreference( - preference = downloadPreferences.removeAfterReadSlots(), + preference = downloadPreferences.removeAfterReadSlots, entries = persistentMapOf( -1 to stringResource(MR.strings.disabled), 0 to stringResource(MR.strings.last_read_chapter), @@ -103,7 +103,7 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.pref_remove_after_read), ), Preference.PreferenceItem.SwitchPreference( - preference = downloadPreferences.removeBookmarkedChapters(), + preference = downloadPreferences.removeBookmarkedChapters, title = stringResource(MR.strings.pref_remove_bookmarked_chapters), ), getExcludedCategoriesPreference( @@ -120,7 +120,7 @@ object SettingsDownloadScreen : SearchableSettings { categories: () -> List, ): Preference.PreferenceItem.MultiSelectListPreference { return Preference.PreferenceItem.MultiSelectListPreference( - preference = downloadPreferences.removeExcludeCategories(), + preference = downloadPreferences.removeExcludeCategories, entries = categories() .associate { it.id.toString() to it.visualName } .toImmutableMap(), @@ -133,10 +133,10 @@ object SettingsDownloadScreen : SearchableSettings { downloadPreferences: DownloadPreferences, allCategories: List, ): Preference.PreferenceGroup { - val downloadNewChaptersPref = downloadPreferences.downloadNewChapters() - val downloadNewUnreadChaptersOnlyPref = downloadPreferences.downloadNewUnreadChaptersOnly() - val downloadNewChapterCategoriesPref = downloadPreferences.downloadNewChapterCategories() - val downloadNewChapterCategoriesExcludePref = downloadPreferences.downloadNewChapterCategoriesExclude() + val downloadNewChaptersPref = downloadPreferences.downloadNewChapters + val downloadNewUnreadChaptersOnlyPref = downloadPreferences.downloadNewUnreadChaptersOnly + val downloadNewChapterCategoriesPref = downloadPreferences.downloadNewChapterCategories + val downloadNewChapterCategoriesExcludePref = downloadPreferences.downloadNewChapterCategoriesExclude val downloadNewChapters by downloadNewChaptersPref.collectAsState() @@ -194,7 +194,7 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.download_ahead), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - preference = downloadPreferences.autoDownloadWhileReading(), + preference = downloadPreferences.autoDownloadWhileReading, entries = listOf(0, 2, 3, 5, 10) .associateWith { if (it == 0) { 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 016cfa126..61f89ceca 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 @@ -73,7 +73,7 @@ object SettingsLibraryScreen : SearchableSettings { val userCategoriesCount = allCategories.filterNot(Category::isSystemCategory).size // For default category - val ids = listOf(libraryPreferences.defaultCategory().defaultValue()) + + val ids = listOf(libraryPreferences.defaultCategory.defaultValue()) + allCategories.fastMap { it.id.toInt() } val labels = listOf(stringResource(MR.strings.default_category_summary)) + allCategories.fastMap { it.visualName } @@ -91,12 +91,12 @@ object SettingsLibraryScreen : SearchableSettings { onClick = { navigator.push(CategoryScreen()) }, ), Preference.PreferenceItem.ListPreference( - preference = libraryPreferences.defaultCategory(), + preference = libraryPreferences.defaultCategory, entries = ids.zip(labels).toMap().toImmutableMap(), title = stringResource(MR.strings.default_category), ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.categorizedDisplaySettings(), + preference = libraryPreferences.categorizedDisplaySettings, title = stringResource(MR.strings.categorized_display_settings), onValueChanged = { if (!it) { @@ -118,9 +118,9 @@ object SettingsLibraryScreen : SearchableSettings { ): Preference.PreferenceGroup { val context = LocalContext.current - val autoUpdateIntervalPref = libraryPreferences.autoUpdateInterval() - val autoUpdateCategoriesPref = libraryPreferences.updateCategories() - val autoUpdateCategoriesExcludePref = libraryPreferences.updateCategoriesExclude() + val autoUpdateIntervalPref = libraryPreferences.autoUpdateInterval + val autoUpdateCategoriesPref = libraryPreferences.updateCategories + val autoUpdateCategoriesExcludePref = libraryPreferences.updateCategoriesExclude val autoUpdateInterval by autoUpdateIntervalPref.collectAsState() @@ -164,7 +164,7 @@ object SettingsLibraryScreen : SearchableSettings { }, ), Preference.PreferenceItem.MultiSelectListPreference( - preference = libraryPreferences.autoUpdateDeviceRestrictions(), + preference = libraryPreferences.autoUpdateDeviceRestrictions, entries = persistentMapOf( DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), DEVICE_NETWORK_NOT_METERED to stringResource(MR.strings.network_not_metered), @@ -189,12 +189,12 @@ object SettingsLibraryScreen : SearchableSettings { onClick = { showCategoriesDialog = true }, ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.autoUpdateMetadata(), + preference = libraryPreferences.autoUpdateMetadata, title = stringResource(MR.strings.pref_library_update_refresh_metadata), subtitle = stringResource(MR.strings.pref_library_update_refresh_metadata_summary), ), Preference.PreferenceItem.MultiSelectListPreference( - preference = libraryPreferences.autoUpdateMangaRestrictions(), + preference = libraryPreferences.autoUpdateMangaRestrictions, entries = persistentMapOf( MANGA_HAS_UNREAD to stringResource(MR.strings.pref_update_only_completely_read), MANGA_NON_READ to stringResource(MR.strings.pref_update_only_started), @@ -204,7 +204,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_library_update_smart_update), ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.newShowUpdatesCount(), + preference = libraryPreferences.newShowUpdatesCount, title = stringResource(MR.strings.pref_library_update_show_tab_badge), ), ), @@ -219,7 +219,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_behavior), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - preference = libraryPreferences.swipeToStartAction(), + preference = libraryPreferences.swipeToStartAction, entries = persistentMapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), @@ -233,7 +233,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_chapter_swipe_start), ), Preference.PreferenceItem.ListPreference( - preference = libraryPreferences.swipeToEndAction(), + preference = libraryPreferences.swipeToEndAction, entries = persistentMapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), @@ -247,7 +247,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_chapter_swipe_end), ), Preference.PreferenceItem.MultiSelectListPreference( - preference = libraryPreferences.markDuplicateReadChapterAsRead(), + preference = libraryPreferences.markDuplicateReadChapterAsRead, entries = persistentMapOf( MARK_DUPLICATE_CHAPTER_READ_EXISTING to stringResource(MR.strings.pref_mark_duplicate_read_chapter_read_existing), @@ -257,7 +257,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_mark_duplicate_read_chapter_read), ), Preference.PreferenceItem.SwitchPreference( - preference = libraryPreferences.hideMissingChapters(), + preference = libraryPreferences.hideMissingChapters, title = stringResource(MR.strings.pref_hide_missing_chapter_indicators), ), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt index 322bf107f..eea437206 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt @@ -33,14 +33,14 @@ object SettingsReaderScreen : SearchableSettings { return listOf( Preference.PreferenceItem.ListPreference( - preference = readerPref.defaultReadingMode(), + preference = readerPref.defaultReadingMode, entries = ReadingMode.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) } .toImmutableMap(), title = stringResource(MR.strings.pref_viewer_type), ), Preference.PreferenceItem.ListPreference( - preference = readerPref.doubleTapAnimSpeed(), + preference = readerPref.doubleTapAnimSpeed, entries = persistentMapOf( 1 to stringResource(MR.strings.double_tap_anim_speed_0), 500 to stringResource(MR.strings.double_tap_anim_speed_normal), @@ -49,17 +49,17 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_double_tap_anim_speed), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPref.showReadingMode(), + preference = readerPref.showReadingMode, title = stringResource(MR.strings.pref_show_reading_mode), subtitle = stringResource(MR.strings.pref_show_reading_mode_summary), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPref.showNavigationOverlayOnStart(), + preference = readerPref.showNavigationOverlayOnStart, title = stringResource(MR.strings.pref_show_navigation_mode), subtitle = stringResource(MR.strings.pref_show_navigation_mode_summary), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPref.pageTransitions(), + preference = readerPref.pageTransitions, title = stringResource(MR.strings.pref_page_transitions), ), getDisplayGroup(readerPreferences = readerPref), @@ -74,20 +74,20 @@ object SettingsReaderScreen : SearchableSettings { @Composable private fun getDisplayGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { - val fullscreenPref = readerPreferences.fullscreen() + val fullscreenPref = readerPreferences.fullscreen val fullscreen by fullscreenPref.collectAsState() return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_display), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - preference = readerPreferences.defaultOrientationType(), + preference = readerPreferences.defaultOrientationType, entries = ReaderOrientation.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) } .toImmutableMap(), title = stringResource(MR.strings.pref_rotation_type), ), Preference.PreferenceItem.ListPreference( - preference = readerPreferences.readerTheme(), + preference = readerPreferences.readerTheme, entries = persistentMapOf( 1 to stringResource(MR.strings.black_background), 2 to stringResource(MR.strings.gray_background), @@ -101,16 +101,16 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_fullscreen), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.drawUnderCutout(), + preference = readerPreferences.drawUnderCutout, title = stringResource(MR.strings.pref_cutout_short), enabled = LocalView.current.hasDisplayCutout() && fullscreen, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.keepScreenOn(), + preference = readerPreferences.keepScreenOn, title = stringResource(MR.strings.pref_keep_screen_on), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.showPageNumber(), + preference = readerPreferences.showPageNumber, title = stringResource(MR.strings.pref_show_page_number), ), ), @@ -119,21 +119,21 @@ object SettingsReaderScreen : SearchableSettings { @Composable private fun getEInkGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { - val flashPageState by readerPreferences.flashOnPageChange().collectAsState() + val flashPageState by readerPreferences.flashOnPageChange.collectAsState() - val flashMillisPref = readerPreferences.flashDurationMillis() + val flashMillisPref = readerPreferences.flashDurationMillis val flashMillis by flashMillisPref.collectAsState() - val flashIntervalPref = readerPreferences.flashPageInterval() + val flashIntervalPref = readerPreferences.flashPageInterval val flashInterval by flashIntervalPref.collectAsState() - val flashColorPref = readerPreferences.flashColor() + val flashColorPref = readerPreferences.flashColor return Preference.PreferenceGroup( title = "E-Ink", preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.flashOnPageChange(), + preference = readerPreferences.flashOnPageChange, title = stringResource(MR.strings.pref_flash_page), subtitle = stringResource(MR.strings.pref_flash_page_summ), ), @@ -174,19 +174,19 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_reading), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.skipRead(), + preference = readerPreferences.skipRead, title = stringResource(MR.strings.pref_skip_read_chapters), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.skipFiltered(), + preference = readerPreferences.skipFiltered, title = stringResource(MR.strings.pref_skip_filtered_chapters), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.skipDupe(), + preference = readerPreferences.skipDupe, title = stringResource(MR.strings.pref_skip_dupe_chapters), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.alwaysShowChapterTransition(), + preference = readerPreferences.alwaysShowChapterTransition, title = stringResource(MR.strings.pref_always_show_chapter_transition), ), ), @@ -195,10 +195,10 @@ object SettingsReaderScreen : SearchableSettings { @Composable private fun getPagedGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { - val navModePref = readerPreferences.navigationModePager() - val imageScaleTypePref = readerPreferences.imageScaleType() - val dualPageSplitPref = readerPreferences.dualPageSplitPaged() - val rotateToFitPref = readerPreferences.dualPageRotateToFit() + val navModePref = readerPreferences.navigationModePager + val imageScaleTypePref = readerPreferences.imageScaleType + val dualPageSplitPref = readerPreferences.dualPageSplitPaged + val rotateToFitPref = readerPreferences.dualPageRotateToFit val navMode by navModePref.collectAsState() val imageScaleType by imageScaleTypePref.collectAsState() @@ -217,7 +217,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( - preference = readerPreferences.pagerNavInverted(), + preference = readerPreferences.pagerNavInverted, entries = persistentListOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, @@ -238,7 +238,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_image_scale_type), ), Preference.PreferenceItem.ListPreference( - preference = readerPreferences.zoomStart(), + preference = readerPreferences.zoomStart, entries = ReaderPreferences.ZoomStart .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() @@ -246,16 +246,16 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_zoom_start), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.cropBorders(), + preference = readerPreferences.cropBorders, title = stringResource(MR.strings.pref_crop_borders), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.landscapeZoom(), + preference = readerPreferences.landscapeZoom, title = stringResource(MR.strings.pref_landscape_zoom), enabled = imageScaleType == 1, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.navigateToPan(), + preference = readerPreferences.navigateToPan, title = stringResource(MR.strings.pref_navigate_pan), enabled = navMode != 5, ), @@ -268,7 +268,7 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.dualPageInvertPaged(), + preference = readerPreferences.dualPageInvertPaged, title = stringResource(MR.strings.pref_dual_page_invert), subtitle = stringResource(MR.strings.pref_dual_page_invert_summary), enabled = dualPageSplit, @@ -282,7 +282,7 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.dualPageRotateToFitInvert(), + preference = readerPreferences.dualPageRotateToFitInvert, title = stringResource(MR.strings.pref_page_rotate_invert), enabled = rotateToFit, ), @@ -294,10 +294,10 @@ object SettingsReaderScreen : SearchableSettings { private fun getWebtoonGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { val numberFormat = remember { NumberFormat.getPercentInstance() } - val navModePref = readerPreferences.navigationModeWebtoon() - val dualPageSplitPref = readerPreferences.dualPageSplitWebtoon() - val rotateToFitPref = readerPreferences.dualPageRotateToFitWebtoon() - val webtoonSidePaddingPref = readerPreferences.webtoonSidePadding() + val navModePref = readerPreferences.navigationModeWebtoon + val dualPageSplitPref = readerPreferences.dualPageSplitWebtoon + val rotateToFitPref = readerPreferences.dualPageRotateToFitWebtoon + val webtoonSidePaddingPref = readerPreferences.webtoonSidePadding val navMode by navModePref.collectAsState() val dualPageSplit by dualPageSplitPref.collectAsState() @@ -316,7 +316,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( - preference = readerPreferences.webtoonNavInverted(), + preference = readerPreferences.webtoonNavInverted, entries = persistentListOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, @@ -338,7 +338,7 @@ object SettingsReaderScreen : SearchableSettings { onValueChanged = { webtoonSidePaddingPref.set(it) }, ), Preference.PreferenceItem.ListPreference( - preference = readerPreferences.readerHideThreshold(), + preference = readerPreferences.readerHideThreshold, entries = persistentMapOf( ReaderPreferences.ReaderHideThreshold.HIGHEST to stringResource(MR.strings.pref_highest), ReaderPreferences.ReaderHideThreshold.HIGH to stringResource(MR.strings.pref_high), @@ -348,7 +348,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_hide_threshold), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.cropBordersWebtoon(), + preference = readerPreferences.cropBordersWebtoon, title = stringResource(MR.strings.pref_crop_borders), ), Preference.PreferenceItem.SwitchPreference( @@ -360,7 +360,7 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.dualPageInvertWebtoon(), + preference = readerPreferences.dualPageInvertWebtoon, title = stringResource(MR.strings.pref_dual_page_invert), subtitle = stringResource(MR.strings.pref_dual_page_invert_summary), enabled = dualPageSplit, @@ -374,16 +374,16 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.dualPageRotateToFitInvertWebtoon(), + preference = readerPreferences.dualPageRotateToFitInvertWebtoon, title = stringResource(MR.strings.pref_page_rotate_invert), enabled = rotateToFit, ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.webtoonDoubleTapZoomEnabled(), + preference = readerPreferences.webtoonDoubleTapZoomEnabled, title = stringResource(MR.strings.pref_double_tap_zoom), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.webtoonDisableZoomOut(), + preference = readerPreferences.webtoonDisableZoomOut, title = stringResource(MR.strings.pref_webtoon_disable_zoom_out), ), ), @@ -392,7 +392,7 @@ object SettingsReaderScreen : SearchableSettings { @Composable private fun getNavigationGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { - val readWithVolumeKeysPref = readerPreferences.readWithVolumeKeys() + val readWithVolumeKeysPref = readerPreferences.readWithVolumeKeys val readWithVolumeKeys by readWithVolumeKeysPref.collectAsState() return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_reader_navigation), @@ -402,7 +402,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_read_with_volume_keys), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.readWithVolumeKeysInverted(), + preference = readerPreferences.readWithVolumeKeysInverted, title = stringResource(MR.strings.pref_read_with_volume_keys_inverted), enabled = readWithVolumeKeys, ), @@ -416,11 +416,11 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_reader_actions), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.readWithLongTap(), + preference = readerPreferences.readWithLongTap, title = stringResource(MR.strings.pref_read_with_long_tap), ), Preference.PreferenceItem.SwitchPreference( - preference = readerPreferences.folderPerManga(), + preference = readerPreferences.folderPerManga, title = stringResource(MR.strings.pref_create_folder_per_manga), subtitle = stringResource(MR.strings.pref_create_folder_per_manga_summary), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt index ad57327d1..69a599326 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt @@ -45,7 +45,7 @@ object SettingsSecurityScreen : SearchableSettings { ): Preference.PreferenceGroup { val context = LocalContext.current val authSupported = remember { context.isAuthenticationSupported() } - val useAuthPref = securityPreferences.useAuthenticator() + val useAuthPref = securityPreferences.useAuthenticator val useAuth by useAuthPref.collectAsState() return Preference.PreferenceGroup( @@ -62,7 +62,7 @@ object SettingsSecurityScreen : SearchableSettings { }, ), Preference.PreferenceItem.ListPreference( - preference = securityPreferences.lockAppAfter(), + preference = securityPreferences.lockAppAfter, entries = LockAfterValues .associateWith { when (it) { @@ -82,11 +82,11 @@ object SettingsSecurityScreen : SearchableSettings { ), Preference.PreferenceItem.SwitchPreference( - preference = securityPreferences.hideNotificationContent(), + preference = securityPreferences.hideNotificationContent, title = stringResource(MR.strings.hide_notification_content), ), Preference.PreferenceItem.ListPreference( - preference = securityPreferences.secureScreen(), + preference = securityPreferences.secureScreen, entries = SecurityPreferences.SecureScreenMode.entries .associateWith { stringResource(it.titleRes) } .toImmutableMap(), @@ -105,12 +105,12 @@ object SettingsSecurityScreen : SearchableSettings { title = stringResource(MR.strings.pref_firebase), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - preference = privacyPreferences.crashlytics(), + preference = privacyPreferences.crashlytics, title = stringResource(MR.strings.onboarding_permission_crashlytics), subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description), ), Preference.PreferenceItem.SwitchPreference( - preference = privacyPreferences.analytics(), + preference = privacyPreferences.analytics, title = stringResource(MR.strings.onboarding_permission_analytics), subtitle = stringResource(MR.strings.onboarding_permission_analytics_description), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt index f2d4bb55b..3b9846555 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt @@ -90,7 +90,7 @@ object SettingsTrackingScreen : SearchableSettings { val trackPreferences = remember { Injekt.get() } val trackerManager = remember { Injekt.get() } val sourceManager = remember { Injekt.get() } - val autoTrackStatePref = trackPreferences.autoUpdateTrackOnMarkRead() + val autoTrackStatePref = trackPreferences.autoUpdateTrackOnMarkRead var dialog by remember { mutableStateOf(null) } dialog?.run { @@ -128,11 +128,11 @@ object SettingsTrackingScreen : SearchableSettings { return listOf( Preference.PreferenceItem.SwitchPreference( - preference = trackPreferences.autoUpdateTrack(), + preference = trackPreferences.autoUpdateTrack, title = stringResource(MR.strings.pref_auto_update_manga_sync), ), Preference.PreferenceItem.ListPreference( - preference = trackPreferences.autoUpdateTrackOnMarkRead(), + preference = trackPreferences.autoUpdateTrackOnMarkRead, entries = AutoTrackState.entries .associateWith { stringResource(it.titleRes) } .toPersistentMap(), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt index 8078ec8cc..f1b4adbdc 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt @@ -275,7 +275,7 @@ object AboutScreen : Screen() { ) .toDateTimestampString( UiPreferences.dateFormat( - Injekt.get().dateFormat().get(), + Injekt.get().dateFormat.get(), ), ) } catch (e: Exception) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt index 7b9bcd6a2..a07679f51 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt @@ -64,7 +64,7 @@ class DebugInfoScreen : Screen() { val context = LocalContext.current val scope = rememberCoroutineScope() - val installationIdPref = remember { Injekt.get().installationId() } + val installationIdPref = remember { Injekt.get().installationId } val installationId by installationIdPref.collectAsState() return Preference.PreferenceGroup( diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt index 88f1e6da2..e006deb89 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt @@ -156,7 +156,7 @@ class WorkerInfoScreen : Screen() { ) .toDateTimestampString( UiPreferences.dateFormat( - Injekt.get().dateFormat().get(), + Injekt.get().dateFormat.get(), ), ) appendLine("Next scheduled run: $timestamp") diff --git a/app/src/main/java/eu/kanade/presentation/reader/DisplayRefreshHost.kt b/app/src/main/java/eu/kanade/presentation/reader/DisplayRefreshHost.kt index ecf26119d..08f7c4323 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/DisplayRefreshHost.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/DisplayRefreshHost.kt @@ -24,10 +24,10 @@ class DisplayRefreshHost { internal var currentDisplayRefresh by mutableStateOf(false) private val readerPreferences = Injekt.get() - internal val flashMillis = readerPreferences.flashDurationMillis() - internal val flashMode = readerPreferences.flashColor() + internal val flashMillis = readerPreferences.flashDurationMillis + internal val flashMode = readerPreferences.flashColor - internal val flashIntervalPref = readerPreferences.flashPageInterval() + internal val flashIntervalPref = readerPreferences.flashPageInterval // Internal State for Flash private var flashInterval = flashIntervalPref.get() diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt index 19c4f0dde..b8c86d4f2 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ColorFilterPage.kt @@ -22,10 +22,10 @@ import tachiyomi.presentation.core.util.collectAsState @Composable internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) { - val customBrightness by screenModel.preferences.customBrightness().collectAsState() + val customBrightness by screenModel.preferences.customBrightness.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_custom_brightness), - pref = screenModel.preferences.customBrightness(), + pref = screenModel.preferences.customBrightness, ) /* @@ -35,31 +35,31 @@ internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) * 0 sets system brightness and hides the overlay. */ if (customBrightness) { - val customBrightnessValue by screenModel.preferences.customBrightnessValue().collectAsState() + val customBrightnessValue by screenModel.preferences.customBrightnessValue.collectAsState() SliderItem( value = customBrightnessValue, valueRange = -75..100, steps = 0, label = stringResource(MR.strings.pref_custom_brightness), - onChange = { screenModel.preferences.customBrightnessValue().set(it) }, + onChange = { screenModel.preferences.customBrightnessValue.set(it) }, pillColor = MaterialTheme.colorScheme.surfaceContainerHighest, ) } - val colorFilter by screenModel.preferences.colorFilter().collectAsState() + val colorFilter by screenModel.preferences.colorFilter.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_custom_color_filter), - pref = screenModel.preferences.colorFilter(), + pref = screenModel.preferences.colorFilter, ) if (colorFilter) { - val colorFilterValue by screenModel.preferences.colorFilterValue().collectAsState() + val colorFilterValue by screenModel.preferences.colorFilterValue.collectAsState() SliderItem( value = colorFilterValue.red, valueRange = 0..255, steps = 0, label = stringResource(MR.strings.color_filter_r_value), onChange = { newRValue -> - screenModel.preferences.colorFilterValue().getAndSet { + screenModel.preferences.colorFilterValue.getAndSet { getColorValue(it, newRValue, RED_MASK, 16) } }, @@ -71,7 +71,7 @@ internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) steps = 0, label = stringResource(MR.strings.color_filter_g_value), onChange = { newGValue -> - screenModel.preferences.colorFilterValue().getAndSet { + screenModel.preferences.colorFilterValue.getAndSet { getColorValue(it, newGValue, GREEN_MASK, 8) } }, @@ -83,7 +83,7 @@ internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) steps = 0, label = stringResource(MR.strings.color_filter_b_value), onChange = { newBValue -> - screenModel.preferences.colorFilterValue().getAndSet { + screenModel.preferences.colorFilterValue.getAndSet { getColorValue(it, newBValue, BLUE_MASK, 0) } }, @@ -95,19 +95,19 @@ internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) steps = 0, label = stringResource(MR.strings.color_filter_a_value), onChange = { newAValue -> - screenModel.preferences.colorFilterValue().getAndSet { + screenModel.preferences.colorFilterValue.getAndSet { getColorValue(it, newAValue, ALPHA_MASK, 24) } }, pillColor = MaterialTheme.colorScheme.surfaceContainerHighest, ) - val colorFilterMode by screenModel.preferences.colorFilterMode().collectAsState() + val colorFilterMode by screenModel.preferences.colorFilterMode.collectAsState() SettingsChipRow(MR.strings.pref_color_filter_mode) { ColorFilterMode.mapIndexed { index, it -> FilterChip( selected = colorFilterMode == index, - onClick = { screenModel.preferences.colorFilterMode().set(index) }, + onClick = { screenModel.preferences.colorFilterMode.set(index) }, label = { Text(stringResource(it.first)) }, ) } @@ -116,11 +116,11 @@ internal fun ColumnScope.ColorFilterPage(screenModel: ReaderSettingsScreenModel) CheckboxItem( label = stringResource(MR.strings.pref_grayscale), - pref = screenModel.preferences.grayscale(), + pref = screenModel.preferences.grayscale, ) CheckboxItem( label = stringResource(MR.strings.pref_inverted_colors), - pref = screenModel.preferences.invertedColors(), + pref = screenModel.preferences.invertedColors, ) } diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/GeneralSettingsPage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/GeneralSettingsPage.kt index 5baba4587..196a77d5c 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/GeneralSettingsPage.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/GeneralSettingsPage.kt @@ -33,24 +33,24 @@ private val flashColors = listOf( @Composable internal fun ColumnScope.GeneralPage(screenModel: ReaderSettingsScreenModel) { - val readerTheme by screenModel.preferences.readerTheme().collectAsState() + val readerTheme by screenModel.preferences.readerTheme.collectAsState() - val flashPageState by screenModel.preferences.flashOnPageChange().collectAsState() + val flashPageState by screenModel.preferences.flashOnPageChange.collectAsState() - val flashMillisPref = screenModel.preferences.flashDurationMillis() + val flashMillisPref = screenModel.preferences.flashDurationMillis val flashMillis by flashMillisPref.collectAsState() - val flashIntervalPref = screenModel.preferences.flashPageInterval() + val flashIntervalPref = screenModel.preferences.flashPageInterval val flashInterval by flashIntervalPref.collectAsState() - val flashColorPref = screenModel.preferences.flashColor() + val flashColorPref = screenModel.preferences.flashColor val flashColor by flashColorPref.collectAsState() SettingsChipRow(MR.strings.pref_reader_theme) { themes.map { (labelRes, value) -> FilterChip( selected = readerTheme == value, - onClick = { screenModel.preferences.readerTheme().set(value) }, + onClick = { screenModel.preferences.readerTheme.set(value) }, label = { Text(stringResource(labelRes)) }, ) } @@ -58,45 +58,45 @@ internal fun ColumnScope.GeneralPage(screenModel: ReaderSettingsScreenModel) { CheckboxItem( label = stringResource(MR.strings.pref_show_page_number), - pref = screenModel.preferences.showPageNumber(), + pref = screenModel.preferences.showPageNumber, ) CheckboxItem( label = stringResource(MR.strings.pref_fullscreen), - pref = screenModel.preferences.fullscreen(), + pref = screenModel.preferences.fullscreen, ) - val isFullscreen by screenModel.preferences.fullscreen().collectAsState() + val isFullscreen by screenModel.preferences.fullscreen.collectAsState() if (LocalActivity.current?.hasDisplayCutout() == true && isFullscreen) { CheckboxItem( label = stringResource(MR.strings.pref_cutout_short), - pref = screenModel.preferences.drawUnderCutout(), + pref = screenModel.preferences.drawUnderCutout, ) } CheckboxItem( label = stringResource(MR.strings.pref_keep_screen_on), - pref = screenModel.preferences.keepScreenOn(), + pref = screenModel.preferences.keepScreenOn, ) CheckboxItem( label = stringResource(MR.strings.pref_read_with_long_tap), - pref = screenModel.preferences.readWithLongTap(), + pref = screenModel.preferences.readWithLongTap, ) CheckboxItem( label = stringResource(MR.strings.pref_always_show_chapter_transition), - pref = screenModel.preferences.alwaysShowChapterTransition(), + pref = screenModel.preferences.alwaysShowChapterTransition, ) CheckboxItem( label = stringResource(MR.strings.pref_page_transitions), - pref = screenModel.preferences.pageTransitions(), + pref = screenModel.preferences.pageTransitions, ) CheckboxItem( label = stringResource(MR.strings.pref_flash_page), - pref = screenModel.preferences.flashOnPageChange(), + pref = screenModel.preferences.flashOnPageChange, ) if (flashPageState) { SliderItem( diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt index c4c726fe6..fa0e5d720 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt @@ -63,32 +63,32 @@ internal fun ColumnScope.ReadingModePage(screenModel: ReaderSettingsScreenModel) private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenModel) { HeadingItem(MR.strings.pager_viewer) - val navigationModePager by screenModel.preferences.navigationModePager().collectAsState() - val pagerNavInverted by screenModel.preferences.pagerNavInverted().collectAsState() + val navigationModePager by screenModel.preferences.navigationModePager.collectAsState() + val pagerNavInverted by screenModel.preferences.pagerNavInverted.collectAsState() TapZonesItems( selected = navigationModePager, - onSelect = screenModel.preferences.navigationModePager()::set, + onSelect = screenModel.preferences.navigationModePager::set, invertMode = pagerNavInverted, - onSelectInvertMode = screenModel.preferences.pagerNavInverted()::set, + onSelectInvertMode = screenModel.preferences.pagerNavInverted::set, ) - val imageScaleType by screenModel.preferences.imageScaleType().collectAsState() + val imageScaleType by screenModel.preferences.imageScaleType.collectAsState() SettingsChipRow(MR.strings.pref_image_scale_type) { ReaderPreferences.ImageScaleType.mapIndexed { index, it -> FilterChip( selected = imageScaleType == index + 1, - onClick = { screenModel.preferences.imageScaleType().set(index + 1) }, + onClick = { screenModel.preferences.imageScaleType.set(index + 1) }, label = { Text(stringResource(it)) }, ) } } - val zoomStart by screenModel.preferences.zoomStart().collectAsState() + val zoomStart by screenModel.preferences.zoomStart.collectAsState() SettingsChipRow(MR.strings.pref_zoom_start) { ReaderPreferences.ZoomStart.mapIndexed { index, it -> FilterChip( selected = zoomStart == index + 1, - onClick = { screenModel.preferences.zoomStart().set(index + 1) }, + onClick = { screenModel.preferences.zoomStart.set(index + 1) }, label = { Text(stringResource(it)) }, ) } @@ -96,42 +96,42 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod CheckboxItem( label = stringResource(MR.strings.pref_crop_borders), - pref = screenModel.preferences.cropBorders(), + pref = screenModel.preferences.cropBorders, ) CheckboxItem( label = stringResource(MR.strings.pref_landscape_zoom), - pref = screenModel.preferences.landscapeZoom(), + pref = screenModel.preferences.landscapeZoom, ) CheckboxItem( label = stringResource(MR.strings.pref_navigate_pan), - pref = screenModel.preferences.navigateToPan(), + pref = screenModel.preferences.navigateToPan, ) - val dualPageSplitPaged by screenModel.preferences.dualPageSplitPaged().collectAsState() + val dualPageSplitPaged by screenModel.preferences.dualPageSplitPaged.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_dual_page_split), - pref = screenModel.preferences.dualPageSplitPaged(), + pref = screenModel.preferences.dualPageSplitPaged, ) if (dualPageSplitPaged) { CheckboxItem( label = stringResource(MR.strings.pref_dual_page_invert), - pref = screenModel.preferences.dualPageInvertPaged(), + pref = screenModel.preferences.dualPageInvertPaged, ) } - val dualPageRotateToFit by screenModel.preferences.dualPageRotateToFit().collectAsState() + val dualPageRotateToFit by screenModel.preferences.dualPageRotateToFit.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_page_rotate), - pref = screenModel.preferences.dualPageRotateToFit(), + pref = screenModel.preferences.dualPageRotateToFit, ) if (dualPageRotateToFit) { CheckboxItem( label = stringResource(MR.strings.pref_page_rotate_invert), - pref = screenModel.preferences.dualPageRotateToFitInvert(), + pref = screenModel.preferences.dualPageRotateToFitInvert, ) } } @@ -142,65 +142,65 @@ private fun ColumnScope.WebtoonViewerSettings(screenModel: ReaderSettingsScreenM HeadingItem(MR.strings.webtoon_viewer) - val navigationModeWebtoon by screenModel.preferences.navigationModeWebtoon().collectAsState() - val webtoonNavInverted by screenModel.preferences.webtoonNavInverted().collectAsState() + val navigationModeWebtoon by screenModel.preferences.navigationModeWebtoon.collectAsState() + val webtoonNavInverted by screenModel.preferences.webtoonNavInverted.collectAsState() TapZonesItems( selected = navigationModeWebtoon, - onSelect = screenModel.preferences.navigationModeWebtoon()::set, + onSelect = screenModel.preferences.navigationModeWebtoon::set, invertMode = webtoonNavInverted, - onSelectInvertMode = screenModel.preferences.webtoonNavInverted()::set, + onSelectInvertMode = screenModel.preferences.webtoonNavInverted::set, ) - val webtoonSidePadding by screenModel.preferences.webtoonSidePadding().collectAsState() + val webtoonSidePadding by screenModel.preferences.webtoonSidePadding.collectAsState() SliderItem( value = webtoonSidePadding, valueRange = ReaderPreferences.let { it.WEBTOON_PADDING_MIN..it.WEBTOON_PADDING_MAX }, label = stringResource(MR.strings.pref_webtoon_side_padding), valueString = numberFormat.format(webtoonSidePadding / 100f), onChange = { - screenModel.preferences.webtoonSidePadding().set(it) + screenModel.preferences.webtoonSidePadding.set(it) }, pillColor = MaterialTheme.colorScheme.surfaceContainerHighest, ) CheckboxItem( label = stringResource(MR.strings.pref_crop_borders), - pref = screenModel.preferences.cropBordersWebtoon(), + pref = screenModel.preferences.cropBordersWebtoon, ) - val dualPageSplitWebtoon by screenModel.preferences.dualPageSplitWebtoon().collectAsState() + val dualPageSplitWebtoon by screenModel.preferences.dualPageSplitWebtoon.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_dual_page_split), - pref = screenModel.preferences.dualPageSplitWebtoon(), + pref = screenModel.preferences.dualPageSplitWebtoon, ) if (dualPageSplitWebtoon) { CheckboxItem( label = stringResource(MR.strings.pref_dual_page_invert), - pref = screenModel.preferences.dualPageInvertWebtoon(), + pref = screenModel.preferences.dualPageInvertWebtoon, ) } - val dualPageRotateToFitWebtoon by screenModel.preferences.dualPageRotateToFitWebtoon().collectAsState() + val dualPageRotateToFitWebtoon by screenModel.preferences.dualPageRotateToFitWebtoon.collectAsState() CheckboxItem( label = stringResource(MR.strings.pref_page_rotate), - pref = screenModel.preferences.dualPageRotateToFitWebtoon(), + pref = screenModel.preferences.dualPageRotateToFitWebtoon, ) if (dualPageRotateToFitWebtoon) { CheckboxItem( label = stringResource(MR.strings.pref_page_rotate_invert), - pref = screenModel.preferences.dualPageRotateToFitInvertWebtoon(), + pref = screenModel.preferences.dualPageRotateToFitInvertWebtoon, ) } CheckboxItem( label = stringResource(MR.strings.pref_double_tap_zoom), - pref = screenModel.preferences.webtoonDoubleTapZoomEnabled(), + pref = screenModel.preferences.webtoonDoubleTapZoomEnabled, ) CheckboxItem( label = stringResource(MR.strings.pref_webtoon_disable_zoom_out), - pref = screenModel.preferences.webtoonDisableZoomOut(), + pref = screenModel.preferences.webtoonDisableZoomOut, ) } diff --git a/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt b/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt index e7d8a4867..71ee3d988 100644 --- a/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt +++ b/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt @@ -35,8 +35,8 @@ fun TachiyomiTheme( ) { val uiPreferences = Injekt.get() BaseTachiyomiTheme( - appTheme = appTheme ?: uiPreferences.appTheme().get(), - isAmoled = amoled ?: uiPreferences.themeDarkAmoled().get(), + appTheme = appTheme ?: uiPreferences.appTheme.get(), + isAmoled = amoled ?: uiPreferences.themeDarkAmoled.get(), content = content, ) } diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt index 3a5362cbc..e17c9a022 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt @@ -55,28 +55,28 @@ fun UpdatesFilterDialog( private fun ColumnScope.FilterSheet( screenModel: UpdatesSettingsScreenModel, ) { - val filterDownloaded by screenModel.updatesPreferences.filterDownloaded().collectAsState() + val filterDownloaded by screenModel.updatesPreferences.filterDownloaded.collectAsState() TriStateItem( label = stringResource(MR.strings.label_downloaded), state = filterDownloaded, onClick = { screenModel.toggleFilter(UpdatesPreferences::filterDownloaded) }, ) - val filterUnread by screenModel.updatesPreferences.filterUnread().collectAsState() + val filterUnread by screenModel.updatesPreferences.filterUnread.collectAsState() TriStateItem( label = stringResource(MR.strings.action_filter_unread), state = filterUnread, onClick = { screenModel.toggleFilter(UpdatesPreferences::filterUnread) }, ) - val filterStarted by screenModel.updatesPreferences.filterStarted().collectAsState() + val filterStarted by screenModel.updatesPreferences.filterStarted.collectAsState() TriStateItem( label = stringResource(MR.strings.label_started), state = filterStarted, onClick = { screenModel.toggleFilter(UpdatesPreferences::filterStarted) }, ) - val filterBookmarked by screenModel.updatesPreferences.filterBookmarked().collectAsState() + val filterBookmarked by screenModel.updatesPreferences.filterBookmarked.collectAsState() TriStateItem( label = stringResource(MR.strings.action_filter_bookmarked), state = filterBookmarked, @@ -85,9 +85,9 @@ private fun ColumnScope.FilterSheet( HorizontalDivider(modifier = Modifier.padding(MaterialTheme.padding.small)) - val filterExcludedScanlators by screenModel.updatesPreferences.filterExcludedScanlators().collectAsState() + val filterExcludedScanlators by screenModel.updatesPreferences.filterExcludedScanlators.collectAsState() - fun toggleScanlatorFilter() = screenModel.updatesPreferences.filterExcludedScanlators().getAndSet { !it } + fun toggleScanlatorFilter() = screenModel.updatesPreferences.filterExcludedScanlators.getAndSet { !it } Row( modifier = Modifier diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index f6e399f67..94539f49c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -107,7 +107,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor val scope = ProcessLifecycleOwner.get().lifecycleScope // Show notification to disable Incognito Mode when it's enabled - basePreferences.incognitoMode().changes() + basePreferences.incognitoMode.changes() .onEach { enabled -> if (enabled) { disableIncognitoReceiver.register() @@ -135,32 +135,32 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor } .launchIn(scope) - privacyPreferences.analytics() + privacyPreferences.analytics .changes() .onEach(TelemetryConfig::setAnalyticsEnabled) .launchIn(scope) - privacyPreferences.crashlytics() + privacyPreferences.crashlytics .changes() .onEach(TelemetryConfig::setCrashlyticsEnabled) .launchIn(scope) - basePreferences.hardwareBitmapThreshold().let { preference -> + basePreferences.hardwareBitmapThreshold.let { preference -> if (!preference.isSet()) preference.set(GLUtil.DEVICE_TEXTURE_LIMIT) } - basePreferences.hardwareBitmapThreshold().changes() + basePreferences.hardwareBitmapThreshold.changes() .onEach { ImageUtil.hardwareBitmapThreshold = it } .launchIn(scope) - setAppCompatDelegateThemeMode(Injekt.get().themeMode().get()) + setAppCompatDelegateThemeMode(Injekt.get().themeMode.get()) // Updates widget update WidgetManager(Injekt.get(), Injekt.get()).apply { init(scope) } if (!LogcatLogger.isInstalled) { val minLogPriority = when { - networkPreferences.verboseLogging().get() -> LogPriority.VERBOSE + networkPreferences.verboseLogging.get() -> LogPriority.VERBOSE BuildConfig.DEBUG -> LogPriority.DEBUG else -> LogPriority.INFO } @@ -211,7 +211,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor crossfade((300 * this@App.animatorDurationScale).toInt()) allowRgb565(DeviceUtil.isLowRamDevice(this@App)) - if (networkPreferences.verboseLogging().get()) logger(DebugLogger()) + if (networkPreferences.verboseLogging.get()) logger(DebugLogger()) // Coil spawns a new thread for every image load by default fetcherCoroutineContext(Dispatchers.IO.limitedParallelism(8)) @@ -256,7 +256,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor private var registered = false override fun onReceive(context: Context, intent: Intent) { - basePreferences.incognitoMode().set(false) + basePreferences.incognitoMode.set(false) } fun register() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt index 330421fca..d5381b8d1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt @@ -101,7 +101,7 @@ class BackupNotifier(private val context: Context) { } setContentTitle(contentTitle) - if (!preferences.hideNotificationContent().get()) { + if (!preferences.hideNotificationContent.get()) { setContentText(content) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt index 80c11c62f..8a0af5dba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreateJob.kt @@ -89,7 +89,7 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete fun setupTask(context: Context, prefInterval: Int? = null) { val backupPreferences = Injekt.get() - val interval = prefInterval ?: backupPreferences.backupInterval().get() + val interval = prefInterval ?: backupPreferences.backupInterval.get() if (interval > 0) { val constraints = Constraints( requiresBatteryNotLow = true, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt index d6851a758..0c1856b45 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt @@ -108,7 +108,7 @@ class BackupCreator( BackupFileValidator(context).validate(fileUri) if (isAutoBackup) { - backupPreferences.lastAutoBackupTimestamp().set(Instant.now().toEpochMilli()) + backupPreferences.lastAutoBackupTimestamp.set(Instant.now().toEpochMilli()) } return fileUri.toString() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CategoriesRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CategoriesRestorer.kt index 15080f8ee..3d73cfefc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CategoriesRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CategoriesRestorer.kt @@ -32,7 +32,7 @@ class CategoriesRestorer( .let { id -> it.toCategory(id).copy(order = order) } } - libraryPreferences.categorizedDisplaySettings().set( + libraryPreferences.categorizedDisplaySettings.set( (dbCategories + categories) .distinctBy { it.flags } .size > 1, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt index 6a7b4469e..b503629d6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt @@ -56,7 +56,7 @@ class DownloadJob(context: Context, workerParams: WorkerParameters) : CoroutineW override suspend fun doWork(): Result { var networkCheck = checkNetworkState( applicationContext.activeNetworkState(), - downloadPreferences.downloadOnlyOverWifi().get(), + downloadPreferences.downloadOnlyOverWifi.get(), ) var active = networkCheck && downloadManager.downloaderStart() @@ -69,7 +69,7 @@ class DownloadJob(context: Context, workerParams: WorkerParameters) : CoroutineW coroutineScope { combineTransform( applicationContext.networkStateFlow(), - downloadPreferences.downloadOnlyOverWifi().changes(), + downloadPreferences.downloadOnlyOverWifi.changes(), transform = { a, b -> emit(checkNetworkState(a, b)) }, ) .onEach { networkCheck = it } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index 7007030a2..2a57f76f9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -397,7 +397,7 @@ class DownloadManager( private suspend fun getChaptersToDelete(chapters: List, manga: Manga): List { // Retrieve the categories that are set to exclude from being deleted on read - val categoriesToExclude = downloadPreferences.removeExcludeCategories().get().map(String::toLong) + val categoriesToExclude = downloadPreferences.removeExcludeCategories.get().map(String::toLong) val categoriesForManga = getCategories.await(manga.id) .map { it.id } @@ -408,7 +408,7 @@ class DownloadManager( chapters } - return if (!downloadPreferences.removeBookmarkedChapters().get()) { + return if (!downloadPreferences.removeBookmarkedChapters.get()) { filteredCategoryManga.filterNot { it.bookmark } } else { filteredCategoryManga diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt index ee3a5fe0f..47f48c38e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt @@ -96,7 +96,7 @@ internal class DownloadNotifier(private val context: Context) { download.pages!!.size, ) - if (preferences.hideNotificationContent().get()) { + if (preferences.hideNotificationContent.get()) { setContentTitle(downloadingProgressText) setContentText(null) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index 94e34ffeb..32de76feb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -136,7 +136,7 @@ class DownloadProvider( fun getSourceDirName(source: Source): String { return DiskUtil.buildValidFilename( source.toString(), - disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames().get(), + disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames.get(), ) } @@ -148,7 +148,7 @@ class DownloadProvider( fun getMangaDirName(mangaTitle: String): String { return DiskUtil.buildValidFilename( mangaTitle, - disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames().get(), + disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames.get(), ) } @@ -163,7 +163,7 @@ class DownloadProvider( chapterName: String, chapterScanlator: String?, chapterUrl: String, - disallowNonAsciiFilenames: Boolean = libraryPreferences.disallowNonAsciiFilenames().get(), + disallowNonAsciiFilenames: Boolean = libraryPreferences.disallowNonAsciiFilenames.get(), ): String { var dirName = sanitizeChapterName(chapterName) if (!chapterScanlator.isNullOrBlank()) { @@ -206,7 +206,7 @@ class DownloadProvider( chapterName, chapterScanlator, chapterUrl, - !libraryPreferences.disallowNonAsciiFilenames().get(), + !libraryPreferences.disallowNonAsciiFilenames.get(), ) return buildList(2) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index c72dc0e7c..521b3a75d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -193,7 +193,7 @@ class Downloader( downloaderJob = scope.launch { val activeDownloadsFlow = combine( queueState, - downloadPreferences.parallelSourceLimit().changes(), + downloadPreferences.parallelSourceLimit.changes(), ) { a, b -> a to b }.transformLatest { (queue, parallelCount) -> while (true) { val activeDownloads = queue.asSequence() @@ -369,7 +369,7 @@ class Downloader( download.status = Download.State.DOWNLOADING // Start downloading images, consider we can have downloaded images already - pageList.asFlow().flatMapMerge(concurrency = downloadPreferences.parallelPageLimit().get()) { page -> + pageList.asFlow().flatMapMerge(concurrency = downloadPreferences.parallelPageLimit.get()) { page -> flow { // Fetch image URL if necessary if (page.imageUrl.isNullOrEmpty()) { @@ -406,7 +406,7 @@ class Downloader( ) // Only rename the directory if it's downloaded - if (downloadPreferences.saveChaptersAsCBZ().get()) { + if (downloadPreferences.saveChaptersAsCBZ.get()) { archiveChapter(mangaDir, chapterDirname, tmpDir) } else { tmpDir.renameTo(chapterDirname) @@ -545,7 +545,7 @@ class Downloader( } private fun splitTallImageIfNeeded(page: Page, tmpDir: UniFile) { - if (!downloadPreferences.splitTallImages().get()) return + if (!downloadPreferences.splitTallImages.get()) return try { val filenamePrefix = "%03d".format(Locale.ENGLISH, page.number) 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 2576eff78..d9e47fe60 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 @@ -99,7 +99,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet if (tags.contains(WORK_NAME_AUTO)) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { val preferences = Injekt.get() - val restrictions = preferences.autoUpdateDeviceRestrictions().get() + val restrictions = preferences.autoUpdateDeviceRestrictions.get() if ((DEVICE_ONLY_ON_WIFI in restrictions) && !context.isConnectedToWifi()) { return Result.retry() } @@ -113,7 +113,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet setForegroundSafely() - libraryPreferences.lastUpdatedTimestamp().set(Instant.now().toEpochMilli()) + libraryPreferences.lastUpdatedTimestamp.set(Instant.now().toEpochMilli()) val categoryId = inputData.getLong(KEY_CATEGORY, -1L) addMangaToQueue(categoryId) @@ -160,8 +160,8 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet val listToUpdate = if (categoryId != -1L) { libraryManga.filter { categoryId in it.categories } } else { - val includedCategories = libraryPreferences.updateCategories().get().map { it.toLong() } - val excludedCategories = libraryPreferences.updateCategoriesExclude().get().map { it.toLong() } + val includedCategories = libraryPreferences.updateCategories.get().map { it.toLong() } + val excludedCategories = libraryPreferences.updateCategoriesExclude.get().map { it.toLong() } libraryManga.filter { val included = includedCategories.isEmpty() || it.categories.intersect(includedCategories).isNotEmpty() @@ -170,7 +170,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet } } - val restrictions = libraryPreferences.autoUpdateMangaRestrictions().get() + val restrictions = libraryPreferences.autoUpdateMangaRestrictions.get() val skippedUpdates = mutableListOf>() val (_, fetchWindowUpperBound) = fetchInterval.getWindow(ZonedDateTime.now()) @@ -272,7 +272,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet hasDownloads.store(true) } - libraryPreferences.newUpdatesCount().getAndSet { it + newChapters.size } + libraryPreferences.newUpdatesCount.getAndSet { it + newChapters.size } // Convert to the manga that contains new chapters newUpdates.add(manga to newChapters.toTypedArray()) @@ -332,7 +332,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet val source = sourceManager.getOrStub(manga.source) // Update manga metadata if needed - if (libraryPreferences.autoUpdateMetadata().get()) { + if (libraryPreferences.autoUpdateMetadata.get()) { val networkManga = source.getMangaDetails(manga.toSManga()) updateManga.awaitUpdateFromSource(manga, networkManga, manualFetch = false, coverCache) } @@ -423,9 +423,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet prefInterval: Int? = null, ) { val preferences = Injekt.get() - val interval = prefInterval ?: preferences.autoUpdateInterval().get() + val interval = prefInterval ?: preferences.autoUpdateInterval.get() if (interval > 0) { - val restrictions = preferences.autoUpdateDeviceRestrictions().get() + val restrictions = preferences.autoUpdateDeviceRestrictions.get() val networkType = if (DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt index f7d6c5dbc..3c2075e63 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt @@ -98,7 +98,7 @@ class LibraryUpdateNotifier( ), ) - if (!securityPreferences.hideNotificationContent().get()) { + if (!securityPreferences.hideNotificationContent.get()) { val updatingText = manga.joinToString("\n") { it.title.chop(40) } progressNotificationBuilder.setStyle(NotificationCompat.BigTextStyle().bigText(updatingText)) } @@ -173,7 +173,7 @@ class LibraryUpdateNotifier( Notifications.CHANNEL_NEW_CHAPTERS, ) { setContentTitle(context.stringResource(MR.strings.notification_new_chapters)) - if (updates.size == 1 && !securityPreferences.hideNotificationContent().get()) { + if (updates.size == 1 && !securityPreferences.hideNotificationContent.get()) { setContentText(updates.first().first.title.chop(NOTIF_TITLE_MAX_LEN)) } else { setContentText( @@ -184,7 +184,7 @@ class LibraryUpdateNotifier( ), ) - if (!securityPreferences.hideNotificationContent().get()) { + if (!securityPreferences.hideNotificationContent.get()) { setStyle( NotificationCompat.BigTextStyle().bigText( updates.joinToString("\n") { @@ -208,7 +208,7 @@ class LibraryUpdateNotifier( } // Per-manga notification - if (!securityPreferences.hideNotificationContent().get()) { + if (!securityPreferences.hideNotificationContent.get()) { launchUI { context.notify( updates.map { (manga, chapters) -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt index 02bf46938..05615ad4f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt @@ -211,7 +211,7 @@ class NotificationReceiver : BroadcastReceiver() { val toUpdate = chapterUrls.mapNotNull { getChapter.await(it, mangaId) } .map { val chapter = it.copy(read = true) - if (downloadPreferences.removeAfterMarkedAsRead().get()) { + if (downloadPreferences.removeAfterMarkedAsRead.get()) { val manga = getManga.await(mangaId) if (manga != null) { val source = sourceManager.get(manga.source) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt index a7bce523b..ecb98f015 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt @@ -43,7 +43,7 @@ class Anilist(id: Long) : BaseTracker(id, "AniList"), DeletableTracker { override val supportsPrivateTracking: Boolean = true - private val scorePreference = trackPreferences.anilistScoreType() + private val scorePreference = trackPreferences.anilistScoreType init { // If the preference is an int from APIv1, logout user to force using APIv2 diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistUtils.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistUtils.kt index 5e45f8da9..59d0937a6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistUtils.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistUtils.kt @@ -17,7 +17,7 @@ fun Track.toApiStatus() = when (status) { private val preferences: TrackPreferences by injectLazy() -fun DomainTrack.toApiScore(): String = when (preferences.anilistScoreType().get()) { +fun DomainTrack.toApiScore(): String = when (preferences.anilistScoreType.get()) { // 10 point "POINT_10" -> (score.toInt() / 10).toString() // 100 point diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt index 7b01ed48e..da1e7b451 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt @@ -32,7 +32,7 @@ class PreferenceModule(val app: Application) : InjektModule { addSingletonFactory { NetworkPreferences( preferenceStore = get(), - verboseLogging = isDebugBuildType, + verboseLoggingDefault = isDebugBuildType, ) } addSingletonFactory { 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 98163ca1f..31132c93d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -77,7 +77,7 @@ class ExtensionManager( ExtensionInstallReceiver(InstallationListener()).register(context) } - private var subLanguagesEnabledOnFirstRun = preferences.enabledLanguages().isSet() + private var subLanguagesEnabledOnFirstRun = preferences.enabledLanguages.isSet() fun getExtensionPackage(sourceId: Long): String? { return installedExtensionsFlow.value.find { extension -> @@ -174,12 +174,12 @@ class ExtensionManager( .map(Extension.Available.Source::lang) val deviceLanguage = Locale.getDefault().language - val defaultLanguages = preferences.enabledLanguages().defaultValue() + val defaultLanguages = preferences.enabledLanguages.defaultValue() val languagesToEnable = availableLanguages.filter { it != deviceLanguage && it.startsWith(deviceLanguage) } - preferences.enabledLanguages().set(defaultLanguages + languagesToEnable) + preferences.enabledLanguages.set(defaultLanguages + languagesToEnable) subLanguagesEnabledOnFirstRun = true } @@ -190,7 +190,7 @@ class ExtensionManager( */ private fun updatedInstalledExtensionsStatuses(availableExtensions: List) { if (availableExtensions.isEmpty()) { - preferences.extensionUpdatesCount().set(0) + preferences.extensionUpdatesCount.set(0) return } @@ -369,7 +369,7 @@ class ExtensionManager( private fun updatePendingUpdatesCount() { val pendingUpdateCount = installedExtensionMapFlow.value.values.count { it.hasUpdate } - preferences.extensionUpdatesCount().set(pendingUpdateCount) + preferences.extensionUpdatesCount.set(pendingUpdateCount) if (pendingUpdateCount == 0) { ExtensionUpdateNotifier(context).dismiss() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt index 2b675ae60..dcf322f4c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionUpdateNotifier.kt @@ -29,7 +29,7 @@ class ExtensionUpdateNotifier( names.size, ), ) - if (!securityPreferences.hideNotificationContent().get()) { + if (!securityPreferences.hideNotificationContent.get()) { val extNames = names.joinToString(", ") setContentText(extNames) setStyle(NotificationCompat.BigTextStyle().bigText(extNames)) diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt index 2b88d3b40..5eae3fe47 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt @@ -39,7 +39,7 @@ internal class ExtensionInstaller( private val scope = CoroutineScope(Dispatchers.IO) private val activeJobs = mutableMapOf() private val activeSteps = mutableMapOf>() - private val extensionInstaller = Injekt.get().extensionInstaller() + private val extensionInstaller = Injekt.get().extensionInstaller private val httpClient: OkHttpClient = Injekt.get().client diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index a55dd22a6..02f150d8b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -44,7 +44,7 @@ internal object ExtensionLoader { private val preferences: SourcePreferences by injectLazy() private val trustExtension: TrustExtension by injectLazy() private val loadNsfwSource by lazy { - preferences.showNsfwSource().get() + preferences.showNsfwSource.get() } private const val EXTENSION_FEATURE = "tachiyomi.extension" diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt index bac6ed5cd..56face00f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt @@ -8,7 +8,7 @@ import uy.kohesive.injekt.api.get fun Source.getNameForMangaInfo(): String { val preferences = Injekt.get() - val enabledLanguages = preferences.enabledLanguages().get() + val enabledLanguages = preferences.enabledLanguages.get() .filterNot { it in listOf("all", "other") } val hasOneActiveLanguages = enabledLanguages.size == 1 val isInEnabledLanguages = lang in enabledLanguages diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt index 20189be6d..c7c8ffe0c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/SecureActivityDelegate.kt @@ -33,14 +33,14 @@ interface SecureActivityDelegate { fun onApplicationStopped() { val preferences = Injekt.get() - if (!preferences.useAuthenticator().get()) return + if (!preferences.useAuthenticator.get()) return if (!AuthenticatorUtil.isAuthenticating) { // Return if app is closed in locked state if (requireUnlock) return // Save app close time if lock is delayed - if (preferences.lockAppAfter().get() > 0) { - preferences.lastAppClosed().set(System.currentTimeMillis()) + if (preferences.lockAppAfter.get() > 0) { + preferences.lastAppClosed.set(System.currentTimeMillis()) } } } @@ -50,13 +50,13 @@ interface SecureActivityDelegate { */ fun onApplicationStart() { val preferences = Injekt.get() - if (!preferences.useAuthenticator().get()) return + if (!preferences.useAuthenticator.get()) return - val lastClosedPref = preferences.lastAppClosed() + val lastClosedPref = preferences.lastAppClosed // `requireUnlock` can be true on process start or if app was closed in locked state if (!AuthenticatorUtil.isAuthenticating && !requireUnlock) { - requireUnlock = when (val lockDelay = preferences.lockAppAfter().get()) { + requireUnlock = when (val lockDelay = preferences.lockAppAfter.get()) { -1 -> false // Never 0 -> true // Always else -> lastClosedPref.get() + lockDelay * 60_000 <= System.currentTimeMillis() @@ -93,8 +93,8 @@ class SecureActivityDelegateImpl : SecureActivityDelegate, DefaultLifecycleObser } private fun setSecureScreen() { - val secureScreenFlow = securityPreferences.secureScreen().changes() - val incognitoModeFlow = preferences.incognitoMode().changes() + val secureScreenFlow = securityPreferences.secureScreen.changes() + val incognitoModeFlow = preferences.incognitoMode.changes() combine(secureScreenFlow, incognitoModeFlow) { secureScreen, incognitoMode -> secureScreen == SecurityPreferences.SecureScreenMode.ALWAYS || (secureScreen == SecurityPreferences.SecureScreenMode.INCOGNITO && incognitoMode) @@ -104,7 +104,7 @@ class SecureActivityDelegateImpl : SecureActivityDelegate, DefaultLifecycleObser } private fun setAppLock() { - if (!securityPreferences.useAuthenticator().get()) return + if (!securityPreferences.useAuthenticator.get()) return if (activity.isAuthenticationSupported()) { if (!SecureActivityDelegate.requireUnlock) return activity.startActivity(Intent(activity, UnlockActivity::class.java)) @@ -115,7 +115,7 @@ class SecureActivityDelegateImpl : SecureActivityDelegate, DefaultLifecycleObser activity.overridePendingTransition(0, 0) } } else { - securityPreferences.useAuthenticator().set(false) + securityPreferences.useAuthenticator.set(false) } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt index 9bd32b7ed..f0c983e0d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt @@ -23,7 +23,7 @@ interface ThemingDelegate { class ThemingDelegateImpl : ThemingDelegate { override fun applyAppTheme(activity: Activity) { val uiPreferences = Injekt.get() - ThemingDelegate.getThemeResIds(uiPreferences.appTheme().get(), uiPreferences.themeDarkAmoled().get()) + ThemingDelegate.getThemeResIds(uiPreferences.appTheme.get(), uiPreferences.themeDarkAmoled.get()) .forEach(activity::setTheme) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt index 7cd83923f..d78af8ca9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt @@ -37,7 +37,7 @@ class ExtensionFilterScreenModel( screenModelScope.launch { combine( getExtensionLanguages.subscribe(), - preferences.enabledLanguages().changes(), + preferences.enabledLanguages.changes(), ) { a, b -> a to b } .catch { throwable -> logcat(LogPriority.ERROR, throwable) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt index 3b94d0996..666c04424 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsScreenModel.kt @@ -98,11 +98,11 @@ class ExtensionsScreenModel( screenModelScope.launchIO { findAvailableExtensions() } - preferences.extensionUpdatesCount().changes() + preferences.extensionUpdatesCount.changes() .onEach { mutableState.update { state -> state.copy(updates = it) } } .launchIn(screenModelScope) - basePreferences.extensionInstaller().changes() + basePreferences.extensionInstaller.changes() .onEach { mutableState.update { state -> state.copy(installer = it) } } .launchIn(screenModelScope) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt index 7997f7262..e763fb6b4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt @@ -86,7 +86,7 @@ class ExtensionDetailsScreenModel( } } launch { - preferences.incognitoExtensions() + preferences.incognitoExtensions .changes() .map { pkgName in it } .distinctUntilChanged() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt index 87f8a074d..ddb89c480 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt @@ -19,7 +19,7 @@ class MigrateSearchScreenModel( private val sourcePreferences: SourcePreferences = Injekt.get(), ) : SearchScreenModel() { - private val migrationSources by lazy { sourcePreferences.migrationSources().get() } + private val migrationSources by lazy { sourcePreferences.migrationSources.get() } override val sortComparator = { map: Map -> compareBy( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt index 8968d62b8..5f41c137e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt @@ -49,11 +49,11 @@ class MigrateSourceScreenModel( } } - preferences.migrationSortingDirection().changes() + preferences.migrationSortingDirection.changes() .onEach { mutableState.update { state -> state.copy(sortingDirection = it) } } .launchIn(screenModelScope) - preferences.migrationSortingMode().changes() + preferences.migrationSortingMode.changes() .onEach { mutableState.update { state -> state.copy(sortingMode = it) } } .launchIn(screenModelScope) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterScreenModel.kt index 4f4ff301c..84e4dacce 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterScreenModel.kt @@ -28,8 +28,8 @@ class SourcesFilterScreenModel( screenModelScope.launch { combine( getLanguagesWithSources.subscribe(), - preferences.enabledLanguages().changes(), - preferences.disabledSources().changes(), + preferences.enabledLanguages.changes(), + preferences.disabledSources.changes(), ) { a, b, c -> Triple(a, b, c) } .catch { throwable -> mutableState.update { 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 2cf676b14..bf55f35f6 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 @@ -71,7 +71,7 @@ class BrowseSourceScreenModel( private val getIncognitoState: GetIncognitoState = Injekt.get(), ) : StateScreenModel(State(Listing.valueOf(listingQuery))) { - var displayMode by sourcePreferences.sourceDisplayMode().asState(screenModelScope) + var displayMode by sourcePreferences.sourceDisplayMode.asState(screenModelScope) val source = sourceManager.getOrStub(sourceId) @@ -95,14 +95,14 @@ class BrowseSourceScreenModel( } if (!getIncognitoState.await(source.id)) { - sourcePreferences.lastUsedSource().set(source.id) + sourcePreferences.lastUsedSource.set(source.id) } } /** * Flow of Pager flow tied to [State.listing] */ - private val hideInLibraryItems = sourcePreferences.hideInLibraryItems().get() + private val hideInLibraryItems = sourcePreferences.hideInLibraryItems.get() val mangaPagerFlowFlow = state.map { it.listing } .distinctUntilChanged() .map { listing -> @@ -123,9 +123,9 @@ class BrowseSourceScreenModel( fun getColumnsPreference(orientation: Int): GridCells { val isLandscape = orientation == Configuration.ORIENTATION_LANDSCAPE val columns = if (isLandscape) { - libraryPreferences.landscapeColumns() + libraryPreferences.landscapeColumns } else { - libraryPreferences.portraitColumns() + libraryPreferences.portraitColumns }.get() return if (columns == 0) GridCells.Adaptive(128.dp) else GridCells.Fixed(columns) } @@ -241,7 +241,7 @@ class BrowseSourceScreenModel( fun addFavorite(manga: Manga) { screenModelScope.launch { val categories = getCategories() - val defaultCategoryId = libraryPreferences.defaultCategory().get() + val defaultCategoryId = libraryPreferences.defaultCategory.get() val defaultCategory = categories.find { it.id == defaultCategoryId.toLong() } when { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt index 08c6669ea..cf3578bff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt @@ -47,9 +47,9 @@ abstract class SearchScreenModel( private val coroutineDispatcher = Executors.newFixedThreadPool(5).asCoroutineDispatcher() private var searchJob: Job? = null - private val enabledLanguages = sourcePreferences.enabledLanguages().get() - private val disabledSources = sourcePreferences.disabledSources().get() - protected val pinnedSources = sourcePreferences.pinnedSources().get() + private val enabledLanguages = sourcePreferences.enabledLanguages.get() + private val disabledSources = sourcePreferences.disabledSources.get() + protected val pinnedSources = sourcePreferences.pinnedSources.get() private var lastQuery: String? = null private var lastSourceFilter: SourceFilter? = null @@ -66,7 +66,7 @@ abstract class SearchScreenModel( init { screenModelScope.launch { - preferences.globalSearchFilterState().changes().collectLatest { state -> + preferences.globalSearchFilterState.changes().collectLatest { state -> mutableState.update { it.copy(onlyShowHasResults = state) } } } @@ -119,7 +119,7 @@ abstract class SearchScreenModel( } fun toggleFilterResults() { - preferences.globalSearchFilterState().toggle() + preferences.globalSearchFilterState.toggle() } fun search() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt index c123a1ff1..44cc1d6ec 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt @@ -189,7 +189,7 @@ class HistoryScreenModel( screenModelScope.launchIO { // Move to default category if applicable val categories = getCategories() - val defaultCategoryId = libraryPreferences.defaultCategory().get().toLong() + val defaultCategoryId = libraryPreferences.defaultCategory.get().toLong() val defaultCategory = categories.find { it.id == defaultCategoryId } when { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt index a713989c1..93df94f77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt @@ -242,8 +242,8 @@ object HomeScreen : Screen() { val count by produceState(initialValue = 0) { val pref = Injekt.get() combine( - pref.newShowUpdatesCount().changes(), - pref.newUpdatesCount().changes(), + pref.newShowUpdatesCount.changes(), + pref.newUpdatesCount.changes(), ) { show, count -> if (show) count else 0 } .collectLatest { value = it } } @@ -263,7 +263,7 @@ object HomeScreen : Screen() { } BrowseTab::class.isInstance(tab) -> { val count by produceState(initialValue = 0) { - Injekt.get().extensionUpdatesCount().changes() + Injekt.get().extensionUpdatesCount.changes() .collectLatest { value = it } } if (count > 0) { 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 0230f2404..09d02f338 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 @@ -89,7 +89,7 @@ class LibraryScreenModel( init { mutableState.update { state -> - state.copy(activeCategoryIndex = libraryPreferences.lastUsedCategory().get()) + state.copy(activeCategoryIndex = libraryPreferences.lastUsedCategory.get()) } screenModelScope.launchIO { combine( @@ -142,9 +142,9 @@ class LibraryScreenModel( } combine( - libraryPreferences.categoryTabs().changes(), - libraryPreferences.categoryNumberOfItems().changes(), - libraryPreferences.showContinueReadingButton().changes(), + libraryPreferences.categoryTabs.changes(), + libraryPreferences.categoryNumberOfItems.changes(), + libraryPreferences.showContinueReadingButton.changes(), ) { a, b, c -> arrayOf(a, b, c) } .onEach { (showCategoryTabs, showMangaCount, showMangaContinueButton) -> mutableState.update { state -> @@ -337,7 +337,7 @@ class LibraryScreenModel( return mapValues { (key, value) -> if (key.sort.type == LibrarySort.Type.Random) { - return@mapValues value.shuffled(Random(libraryPreferences.randomSortSeed().get())) + return@mapValues value.shuffled(Random(libraryPreferences.randomSortSeed.get())) } val manga = value.mapNotNull { favoritesById[it] } @@ -352,19 +352,19 @@ class LibraryScreenModel( private fun getLibraryItemPreferencesFlow(): Flow { return combine( - libraryPreferences.downloadBadge().changes(), - libraryPreferences.unreadBadge().changes(), - libraryPreferences.localBadge().changes(), - libraryPreferences.languageBadge().changes(), - libraryPreferences.autoUpdateMangaRestrictions().changes(), + libraryPreferences.downloadBadge.changes(), + libraryPreferences.unreadBadge.changes(), + libraryPreferences.localBadge.changes(), + libraryPreferences.languageBadge.changes(), + libraryPreferences.autoUpdateMangaRestrictions.changes(), - preferences.downloadedOnly().changes(), - libraryPreferences.filterDownloaded().changes(), - libraryPreferences.filterUnread().changes(), - libraryPreferences.filterStarted().changes(), - libraryPreferences.filterBookmarked().changes(), - libraryPreferences.filterCompleted().changes(), - libraryPreferences.filterIntervalCustom().changes(), + preferences.downloadedOnly.changes(), + libraryPreferences.filterDownloaded.changes(), + libraryPreferences.filterUnread.changes(), + libraryPreferences.filterStarted.changes(), + libraryPreferences.filterBookmarked.changes(), + libraryPreferences.filterCompleted.changes(), + libraryPreferences.filterIntervalCustom.changes(), ) { ItemPreferences( downloadBadge = it[0] as Boolean, @@ -589,11 +589,11 @@ class LibraryScreenModel( } fun getDisplayMode(): PreferenceMutableState { - return libraryPreferences.displayMode().asState(screenModelScope) + return libraryPreferences.displayMode.asState(screenModelScope) } fun getColumnsForOrientation(isLandscape: Boolean): PreferenceMutableState { - return (if (isLandscape) libraryPreferences.landscapeColumns() else libraryPreferences.portraitColumns()) + return (if (isLandscape) libraryPreferences.landscapeColumns else libraryPreferences.portraitColumns) .asState(screenModelScope) } @@ -686,7 +686,7 @@ class LibraryScreenModel( } .coercedActiveCategoryIndex - libraryPreferences.lastUsedCategory().set(newIndex) + libraryPreferences.lastUsedCategory.set(newIndex) } fun openChangeCategoryDialog() { 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 5ccab88ae..a89e347cd 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 @@ -146,7 +146,7 @@ class MainActivity : BaseActivity() { val context = LocalContext.current var incognito by remember { mutableStateOf(getIncognitoState.await(null)) } - val downloadOnly by preferences.downloadedOnly().collectAsState() + val downloadOnly by preferences.downloadedOnly.collectAsState() val indexing by downloadCache.isInitializing.collectAsState() val isSystemInDarkTheme = isSystemInDarkTheme() @@ -178,7 +178,7 @@ class MainActivity : BaseActivity() { handleIntentAction(intent, navigator) // Reset Incognito Mode on relaunch - preferences.incognitoMode().set(false) + preferences.incognitoMode.set(false) } } LaunchedEffect(navigator.lastItem) { @@ -225,7 +225,7 @@ class MainActivity : BaseActivity() { // Pop source-related screens when incognito mode is turned off LaunchedEffect(Unit) { - preferences.incognitoMode().changes() + preferences.incognitoMode.changes() .drop(1) .filter { !it } .onEach { @@ -271,7 +271,7 @@ class MainActivity : BaseActivity() { } setSplashScreenExitAnimation(splashScreen) - if (isLaunch && libraryPreferences.autoClearChapterCache().get()) { + if (isLaunch && libraryPreferences.autoClearChapterCache.get()) { lifecycleScope.launchIO { chapterCache.clear() } @@ -340,7 +340,7 @@ class MainActivity : BaseActivity() { val navigator = LocalNavigator.currentOrThrow LaunchedEffect(Unit) { - if (!preferences.shownOnboardingFlow().get() && navigator.lastItem !is OnboardingScreen) { + if (!preferences.shownOnboardingFlow.get() && navigator.lastItem !is OnboardingScreen) { navigator.push(OnboardingScreen()) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index eb3db386e..78c80c85f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -141,14 +141,14 @@ class MangaScreenModel( private val filteredChapters: List? get() = successState?.processedChapters - val chapterSwipeStartAction = libraryPreferences.swipeToEndAction().get() - val chapterSwipeEndAction = libraryPreferences.swipeToStartAction().get() - var autoTrackState = trackPreferences.autoUpdateTrackOnMarkRead().get() + val chapterSwipeStartAction = libraryPreferences.swipeToEndAction.get() + val chapterSwipeEndAction = libraryPreferences.swipeToStartAction.get() + var autoTrackState = trackPreferences.autoUpdateTrackOnMarkRead.get() - private val skipFiltered by readerPreferences.skipFiltered().asState(screenModelScope) + private val skipFiltered by readerPreferences.skipFiltered.asState(screenModelScope) val isUpdateIntervalEnabled = - LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in libraryPreferences.autoUpdateMangaRestrictions().get() + LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in libraryPreferences.autoUpdateMangaRestrictions.get() private val selectedPositions: Array = arrayOf(-1, -1) // first and last selected index in list private val selectedChapterIds: HashSet = HashSet() @@ -230,7 +230,7 @@ class MangaScreenModel( excludedScanlators = getExcludedScanlators.await(mangaId), isRefreshingData = needRefreshInfo || needRefreshChapter, dialog = null, - hideMissingChapters = libraryPreferences.hideMissingChapters().get(), + hideMissingChapters = libraryPreferences.hideMissingChapters.get(), ) } @@ -338,7 +338,7 @@ class MangaScreenModel( // Now check if user previously set categories, when available val categories = getCategories() - val defaultCategoryId = libraryPreferences.defaultCategory().get().toLong() + val defaultCategoryId = libraryPreferences.defaultCategory.get().toLong() val defaultCategory = categories.find { it.id == defaultCategoryId } when { // Default category set diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt index 53794f505..355c637dd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt @@ -99,7 +99,7 @@ data class TrackInfoDialogHomeScreen( val context = LocalContext.current val screenModel = rememberScreenModel { Model(mangaId, sourceId) } - val dateFormat = remember { UiPreferences.dateFormat(Injekt.get().dateFormat().get()) } + val dateFormat = remember { UiPreferences.dateFormat(Injekt.get().dateFormat.get()) } val state by screenModel.state.collectAsState() TrackInfoDialogHome( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt index 03604b59f..f673292de 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt @@ -82,8 +82,8 @@ private class MoreScreenModel( preferences: BasePreferences = Injekt.get(), ) : ScreenModel { - var downloadedOnly by preferences.downloadedOnly().asState(screenModelScope) - var incognitoMode by preferences.incognitoMode().asState(screenModelScope) + var downloadedOnly by preferences.downloadedOnly.asState(screenModelScope) + var incognitoMode by preferences.incognitoMode.asState(screenModelScope) private var _downloadQueueState: MutableStateFlow = MutableStateFlow(DownloadQueueState.Stopped) val downloadQueueState: StateFlow = _downloadQueueState.asStateFlow() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt index 7d0268636..3e8a36bf3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt @@ -24,10 +24,10 @@ class OnboardingScreen : Screen() { val navigator = LocalNavigator.currentOrThrow val basePreferences = remember { Injekt.get() } - val shownOnboardingFlow by basePreferences.shownOnboardingFlow().collectAsState() + val shownOnboardingFlow by basePreferences.shownOnboardingFlow.collectAsState() val finishOnboarding: () -> Unit = { - basePreferences.shownOnboardingFlow().set(true) + basePreferences.shownOnboardingFlow.set(true) navigator.pop() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 6e2a78a80..830c6ccc2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -192,7 +192,7 @@ class ReaderActivity : BaseActivity() { setMenuVisibility(viewModel.state.value.menuVisible) // Finish when incognito mode is disabled - preferences.incognitoMode().changes() + preferences.incognitoMode.changes() .drop(1) .onEach { if (!it) finish() } .launchIn(lifecycleScope) @@ -248,7 +248,7 @@ class ReaderActivity : BaseActivity() { private fun ReaderActivityBinding.setComposeOverlay(): Unit = composeOverlay.setComposeContent { val state by viewModel.state.collectAsState() - val showPageNumber by readerPreferences.showPageNumber().collectAsState() + val showPageNumber by readerPreferences.showPageNumber.collectAsState() val settingsScreenModel = remember { ReaderSettingsScreenModel( readerState = viewModel.state, @@ -304,7 +304,7 @@ class ReaderActivity : BaseActivity() { screenModel = settingsScreenModel, onChange = { stringRes -> menuToggleToast?.cancel() - if (!readerPreferences.showReadingMode().get()) { + if (!readerPreferences.showReadingMode.get()) { menuToggleToast = toast(stringRes) } }, @@ -425,11 +425,11 @@ class ReaderActivity : BaseActivity() { @Composable private fun ContentOverlay(state: ReaderViewModel.State) { - val flashOnPageChange by readerPreferences.flashOnPageChange().collectAsState() + val flashOnPageChange by readerPreferences.flashOnPageChange.collectAsState() - val colorOverlayEnabled by readerPreferences.colorFilter().collectAsState() - val colorOverlay by readerPreferences.colorFilterValue().collectAsState() - val colorOverlayMode by readerPreferences.colorFilterMode().collectAsState() + val colorOverlayEnabled by readerPreferences.colorFilter.collectAsState() + val colorOverlay by readerPreferences.colorFilterValue.collectAsState() + val colorOverlayMode by readerPreferences.colorFilterMode.collectAsState() val colorOverlayBlendMode = remember(colorOverlayMode) { ReaderPreferences.ColorFilterMode.getOrNull(colorOverlayMode)?.second } @@ -453,8 +453,8 @@ class ReaderActivity : BaseActivity() { val isHttpSource = viewModel.getSource() is HttpSource - val cropBorderPaged by readerPreferences.cropBorders().collectAsState() - val cropBorderWebtoon by readerPreferences.cropBordersWebtoon().collectAsState() + val cropBorderPaged by readerPreferences.cropBorders.collectAsState() + val cropBorderWebtoon by readerPreferences.cropBordersWebtoon.collectAsState() val isPagerType = ReadingMode.isPagerType(viewModel.getMangaReadingMode()) val cropEnabled = if (isPagerType) cropBorderPaged else cropBorderWebtoon @@ -508,7 +508,7 @@ class ReaderActivity : BaseActivity() { viewModel.showMenus(visible) if (visible) { windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) - } else if (readerPreferences.fullscreen().get()) { + } else if (readerPreferences.fullscreen.get()) { windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) } } @@ -535,10 +535,10 @@ class ReaderActivity : BaseActivity() { binding.viewerContainer.removeAllViews() } viewModel.onViewerLoaded(newViewer) - updateViewerInset(readerPreferences.fullscreen().get(), readerPreferences.drawUnderCutout().get()) + updateViewerInset(readerPreferences.fullscreen.get(), readerPreferences.drawUnderCutout.get()) binding.viewerContainer.addView(newViewer.getView()) - if (readerPreferences.showReadingMode().get()) { + if (readerPreferences.showReadingMode.get()) { showReadingModeToast(viewModel.getMangaReadingMode()) } @@ -839,7 +839,7 @@ class ReaderActivity : BaseActivity() { * Initializes the reader subscriptions. */ init { - readerPreferences.readerTheme().changes() + readerPreferences.readerTheme.changes() .onEach { theme -> binding.readerContainer.setBackgroundColor( when (theme) { @@ -852,21 +852,21 @@ class ReaderActivity : BaseActivity() { } .launchIn(lifecycleScope) - preferences.displayProfile().changes() + preferences.displayProfile.changes() .onEach { setDisplayProfile(it) } .launchIn(lifecycleScope) - readerPreferences.keepScreenOn().changes() + readerPreferences.keepScreenOn.changes() .onEach(::setKeepScreenOn) .launchIn(lifecycleScope) - readerPreferences.customBrightness().changes() + readerPreferences.customBrightness.changes() .onEach(::setCustomBrightness) .launchIn(lifecycleScope) combine( - readerPreferences.grayscale().changes(), - readerPreferences.invertedColors().changes(), + readerPreferences.grayscale.changes(), + readerPreferences.invertedColors.changes(), ) { grayscale, invertedColors -> grayscale to invertedColors } .onEach { (grayscale, invertedColors) -> setLayerPaint(grayscale, invertedColors) @@ -874,8 +874,8 @@ class ReaderActivity : BaseActivity() { .launchIn(lifecycleScope) combine( - readerPreferences.fullscreen().changes(), - readerPreferences.drawUnderCutout().changes(), + readerPreferences.fullscreen.changes(), + readerPreferences.drawUnderCutout.changes(), ) { fullscreen, drawUnderCutout -> fullscreen to drawUnderCutout } .onEach { (fullscreen, drawUnderCutout) -> updateViewerInset(fullscreen, drawUnderCutout) @@ -929,7 +929,7 @@ class ReaderActivity : BaseActivity() { */ private fun setCustomBrightness(enabled: Boolean) { if (enabled) { - readerPreferences.customBrightnessValue().changes() + readerPreferences.customBrightnessValue.changes() .sample(100) .onEach(::setCustomBrightnessValue) .launchIn(lifecycleScope) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 1bc897279..54ca8b57f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -169,11 +169,11 @@ class ReaderViewModel @JvmOverloads constructor( ?: error("Requested chapter of id $chapterId not found in chapter list") val chaptersForReader = when { - (readerPreferences.skipRead().get() || readerPreferences.skipFiltered().get()) -> { + (readerPreferences.skipRead.get() || readerPreferences.skipFiltered.get()) -> { val filteredChapters = chapters.filterNot { when { - readerPreferences.skipRead().get() && it.read -> true - readerPreferences.skipFiltered().get() -> { + readerPreferences.skipRead.get() && it.read -> true + readerPreferences.skipFiltered.get() -> { (manga.unreadFilterRaw == Manga.CHAPTER_SHOW_READ && !it.read) || (manga.unreadFilterRaw == Manga.CHAPTER_SHOW_UNREAD && it.read) || ( @@ -215,14 +215,14 @@ class ReaderViewModel @JvmOverloads constructor( val result = chaptersForReader .sortedWith(getChapterSort(manga, sortDescending = false)) .run { - if (readerPreferences.skipDupe().get()) { + if (readerPreferences.skipDupe.get()) { removeDuplicates(selectedChapter) } else { this } } .run { - if (basePreferences.downloadedOnly().get()) { + if (basePreferences.downloadedOnly.get()) { filterDownloaded(manga) } else { this @@ -235,7 +235,7 @@ class ReaderViewModel @JvmOverloads constructor( } private val incognitoMode: Boolean by lazy { getIncognitoState.await(manga?.source) } - private val downloadAheadAmount = downloadPreferences.autoDownloadWhileReading().get() + private val downloadAheadAmount = downloadPreferences.autoDownloadWhileReading.get() init { // To save state @@ -492,7 +492,7 @@ class ReaderViewModel @JvmOverloads constructor( if (!isNextChapterDownloaded) return@launchIO val chaptersToDownload = getNextChapters.await(manga.id, nextChapter.id!!).run { - if (readerPreferences.skipDupe().get()) { + if (readerPreferences.skipDupe.get()) { removeDuplicates(nextChapter.toDomainChapter()!!) } else { this @@ -522,7 +522,7 @@ class ReaderViewModel @JvmOverloads constructor( * @param currentChapter current chapter, which is going to be marked as read. */ private suspend fun deleteChapterIfNeeded(currentChapter: ReaderChapter) { - val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots().get() + val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots.get() if (removeAfterReadSlots == -1) return // Determine which chapter should be deleted and enqueue @@ -573,7 +573,7 @@ class ReaderViewModel @JvmOverloads constructor( updateTrackChapterRead(readerChapter) deleteChapterIfNeeded(readerChapter) - val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead().get() + val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead.get() .contains(LibraryPreferences.MARK_DUPLICATE_CHAPTER_READ_EXISTING) if (!markDuplicateAsRead) return @@ -677,7 +677,7 @@ class ReaderViewModel @JvmOverloads constructor( * Returns the viewer position used by this manga or the default one. */ fun getMangaReadingMode(resolveDefault: Boolean = true): Int { - val default = readerPreferences.defaultReadingMode().get() + val default = readerPreferences.defaultReadingMode.get() val readingMode = ReadingMode.fromPreference(manga?.readingMode?.toInt()) return when { resolveDefault && readingMode == ReadingMode.DEFAULT -> default @@ -713,7 +713,7 @@ class ReaderViewModel @JvmOverloads constructor( * Returns the orientation type used by this manga or the default one. */ fun getMangaOrientation(resolveDefault: Boolean = true): Int { - val default = readerPreferences.defaultOrientationType().get() + val default = readerPreferences.defaultOrientationType.get() val orientation = ReaderOrientation.fromPreference(manga?.readerOrientation?.toInt()) return when { resolveDefault && orientation == ReaderOrientation.DEFAULT -> default @@ -749,9 +749,9 @@ class ReaderViewModel @JvmOverloads constructor( fun toggleCropBorders(): Boolean { val isPagerType = ReadingMode.isPagerType(getMangaReadingMode()) return if (isPagerType) { - readerPreferences.cropBorders().toggle() + readerPreferences.cropBorders.toggle() } else { - readerPreferences.cropBordersWebtoon().toggle() + readerPreferences.cropBordersWebtoon.toggle() } } @@ -818,7 +818,7 @@ class ReaderViewModel @JvmOverloads constructor( val filename = generateFilename(manga, page) // Pictures directory. - val relativePath = if (readerPreferences.folderPerManga().get()) { + val relativePath = if (readerPreferences.folderPerManga.get()) { DiskUtil.buildValidFilename( manga.title, ) @@ -922,7 +922,7 @@ class ReaderViewModel @JvmOverloads constructor( */ private fun updateTrackChapterRead(readerChapter: ReaderChapter) { if (incognitoMode) return - if (!trackPreferences.autoUpdateTrack().get()) return + if (!trackPreferences.autoUpdateTrack.get()) return val manga = manga ?: return val context = Injekt.get() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt index c9072fc6b..f4854a219 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt @@ -3,139 +3,173 @@ package eu.kanade.tachiyomi.ui.reader.setting import android.os.Build import androidx.compose.ui.graphics.BlendMode import dev.icerock.moko.resources.StringResource +import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.preference.getEnum import tachiyomi.i18n.MR class ReaderPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { // region General - fun pageTransitions() = preferenceStore.getBoolean("pref_enable_transitions_key", true) + val pageTransitions: Preference = preferenceStore.getBoolean("pref_enable_transitions_key", true) - fun flashOnPageChange() = preferenceStore.getBoolean("pref_reader_flash", false) + val flashOnPageChange: Preference = preferenceStore.getBoolean("pref_reader_flash", false) - fun flashDurationMillis() = preferenceStore.getInt("pref_reader_flash_duration", MILLI_CONVERSION) + val flashDurationMillis: Preference = preferenceStore.getInt("pref_reader_flash_duration", MILLI_CONVERSION) - fun flashPageInterval() = preferenceStore.getInt("pref_reader_flash_interval", 1) + val flashPageInterval: Preference = preferenceStore.getInt("pref_reader_flash_interval", 1) - fun flashColor() = preferenceStore.getEnum("pref_reader_flash_mode", FlashColor.BLACK) + val flashColor: Preference = preferenceStore.getEnum("pref_reader_flash_mode", FlashColor.BLACK) - fun doubleTapAnimSpeed() = preferenceStore.getInt("pref_double_tap_anim_speed", 500) + val doubleTapAnimSpeed: Preference = preferenceStore.getInt("pref_double_tap_anim_speed", 500) - fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true) + val showPageNumber: Preference = preferenceStore.getBoolean("pref_show_page_number_key", true) - fun showReadingMode() = preferenceStore.getBoolean("pref_show_reading_mode", true) + val showReadingMode: Preference = preferenceStore.getBoolean("pref_show_reading_mode", true) - fun fullscreen() = preferenceStore.getBoolean("fullscreen", true) + val fullscreen: Preference = preferenceStore.getBoolean("fullscreen", true) - fun drawUnderCutout() = preferenceStore.getBoolean("cutout_short", true) + val drawUnderCutout: Preference = preferenceStore.getBoolean("cutout_short", true) - fun keepScreenOn() = preferenceStore.getBoolean("pref_keep_screen_on_key", false) + val keepScreenOn: Preference = preferenceStore.getBoolean("pref_keep_screen_on_key", false) - fun defaultReadingMode() = preferenceStore.getInt( + val defaultReadingMode: Preference = preferenceStore.getInt( "pref_default_reading_mode_key", ReadingMode.RIGHT_TO_LEFT.flagValue, ) - fun defaultOrientationType() = preferenceStore.getInt( + val defaultOrientationType: Preference = preferenceStore.getInt( "pref_default_orientation_type_key", ReaderOrientation.FREE.flagValue, ) - fun webtoonDoubleTapZoomEnabled() = preferenceStore.getBoolean("pref_enable_double_tap_zoom_webtoon", true) + val webtoonDoubleTapZoomEnabled: Preference = preferenceStore.getBoolean( + "pref_enable_double_tap_zoom_webtoon", + true, + ) - fun imageScaleType() = preferenceStore.getInt("pref_image_scale_type_key", 1) + val imageScaleType: Preference = preferenceStore.getInt("pref_image_scale_type_key", 1) - fun zoomStart() = preferenceStore.getInt("pref_zoom_start_key", 1) + val zoomStart: Preference = preferenceStore.getInt("pref_zoom_start_key", 1) - fun readerTheme() = preferenceStore.getInt("pref_reader_theme_key", 1) + val readerTheme: Preference = preferenceStore.getInt("pref_reader_theme_key", 1) - fun alwaysShowChapterTransition() = preferenceStore.getBoolean("always_show_chapter_transition", true) + val alwaysShowChapterTransition: Preference = preferenceStore.getBoolean( + "always_show_chapter_transition", + true, + ) - fun cropBorders() = preferenceStore.getBoolean("crop_borders", false) + val cropBorders: Preference = preferenceStore.getBoolean("crop_borders", false) - fun navigateToPan() = preferenceStore.getBoolean("navigate_pan", true) + val navigateToPan: Preference = preferenceStore.getBoolean("navigate_pan", true) - fun landscapeZoom() = preferenceStore.getBoolean("landscape_zoom", true) + val landscapeZoom: Preference = preferenceStore.getBoolean("landscape_zoom", true) - fun cropBordersWebtoon() = preferenceStore.getBoolean("crop_borders_webtoon", false) + val cropBordersWebtoon: Preference = preferenceStore.getBoolean("crop_borders_webtoon", false) - fun webtoonSidePadding() = preferenceStore.getInt("webtoon_side_padding", WEBTOON_PADDING_MIN) + val webtoonSidePadding: Preference = preferenceStore.getInt("webtoon_side_padding", WEBTOON_PADDING_MIN) - fun readerHideThreshold() = preferenceStore.getEnum("reader_hide_threshold", ReaderHideThreshold.LOW) + val readerHideThreshold: Preference = preferenceStore.getEnum( + "reader_hide_threshold", + ReaderHideThreshold.LOW, + ) - fun folderPerManga() = preferenceStore.getBoolean("create_folder_per_manga", false) + val folderPerManga: Preference = preferenceStore.getBoolean("create_folder_per_manga", false) - fun skipRead() = preferenceStore.getBoolean("skip_read", false) + val skipRead: Preference = preferenceStore.getBoolean("skip_read", false) - fun skipFiltered() = preferenceStore.getBoolean("skip_filtered", true) + val skipFiltered: Preference = preferenceStore.getBoolean("skip_filtered", true) - fun skipDupe() = preferenceStore.getBoolean("skip_dupe", false) + val skipDupe: Preference = preferenceStore.getBoolean("skip_dupe", false) - fun webtoonDisableZoomOut() = preferenceStore.getBoolean("webtoon_disable_zoom_out", false) + val webtoonDisableZoomOut: Preference = preferenceStore.getBoolean("webtoon_disable_zoom_out", false) // endregion - // region Split two page spread + // region Split two-page spread - fun dualPageSplitPaged() = preferenceStore.getBoolean("pref_dual_page_split", false) + val dualPageSplitPaged: Preference = preferenceStore.getBoolean("pref_dual_page_split", false) - fun dualPageInvertPaged() = preferenceStore.getBoolean("pref_dual_page_invert", false) + val dualPageInvertPaged: Preference = preferenceStore.getBoolean("pref_dual_page_invert", false) - fun dualPageSplitWebtoon() = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false) + val dualPageSplitWebtoon: Preference = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false) - fun dualPageInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false) + val dualPageInvertWebtoon: Preference = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false) - fun dualPageRotateToFit() = preferenceStore.getBoolean("pref_dual_page_rotate", false) + val dualPageRotateToFit: Preference = preferenceStore.getBoolean("pref_dual_page_rotate", false) - fun dualPageRotateToFitInvert() = preferenceStore.getBoolean("pref_dual_page_rotate_invert", false) + val dualPageRotateToFitInvert: Preference = preferenceStore.getBoolean( + "pref_dual_page_rotate_invert", + false, + ) - fun dualPageRotateToFitWebtoon() = preferenceStore.getBoolean("pref_dual_page_rotate_webtoon", false) + val dualPageRotateToFitWebtoon: Preference = preferenceStore.getBoolean( + "pref_dual_page_rotate_webtoon", + false, + ) - fun dualPageRotateToFitInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_rotate_invert_webtoon", false) + val dualPageRotateToFitInvertWebtoon: Preference = preferenceStore.getBoolean( + "pref_dual_page_rotate_invert_webtoon", + false, + ) // endregion // region Color filter - fun customBrightness() = preferenceStore.getBoolean("pref_custom_brightness_key", false) + val customBrightness: Preference = preferenceStore.getBoolean("pref_custom_brightness_key", false) - fun customBrightnessValue() = preferenceStore.getInt("custom_brightness_value", 0) + val customBrightnessValue: Preference = preferenceStore.getInt("custom_brightness_value", 0) - fun colorFilter() = preferenceStore.getBoolean("pref_color_filter_key", false) + val colorFilter: Preference = preferenceStore.getBoolean("pref_color_filter_key", false) - fun colorFilterValue() = preferenceStore.getInt("color_filter_value", 0) + val colorFilterValue: Preference = preferenceStore.getInt("color_filter_value", 0) - fun colorFilterMode() = preferenceStore.getInt("color_filter_mode", 0) + val colorFilterMode: Preference = preferenceStore.getInt("color_filter_mode", 0) - fun grayscale() = preferenceStore.getBoolean("pref_grayscale", false) + val grayscale: Preference = preferenceStore.getBoolean("pref_grayscale", false) - fun invertedColors() = preferenceStore.getBoolean("pref_inverted_colors", false) + val invertedColors: Preference = preferenceStore.getBoolean("pref_inverted_colors", false) // endregion // region Controls - fun readWithLongTap() = preferenceStore.getBoolean("reader_long_tap", true) + val readWithLongTap: Preference = preferenceStore.getBoolean("reader_long_tap", true) - fun readWithVolumeKeys() = preferenceStore.getBoolean("reader_volume_keys", false) + val readWithVolumeKeys: Preference = preferenceStore.getBoolean("reader_volume_keys", false) - fun readWithVolumeKeysInverted() = preferenceStore.getBoolean("reader_volume_keys_inverted", false) + val readWithVolumeKeysInverted: Preference = preferenceStore.getBoolean( + "reader_volume_keys_inverted", + false, + ) - fun navigationModePager() = preferenceStore.getInt("reader_navigation_mode_pager", 0) + val navigationModePager: Preference = preferenceStore.getInt("reader_navigation_mode_pager", 0) - fun navigationModeWebtoon() = preferenceStore.getInt("reader_navigation_mode_webtoon", 0) + val navigationModeWebtoon: Preference = preferenceStore.getInt("reader_navigation_mode_webtoon", 0) - fun pagerNavInverted() = preferenceStore.getEnum("reader_tapping_inverted", TappingInvertMode.NONE) + val pagerNavInverted: Preference = preferenceStore.getEnum( + "reader_tapping_inverted", + TappingInvertMode.NONE, + ) - fun webtoonNavInverted() = preferenceStore.getEnum("reader_tapping_inverted_webtoon", TappingInvertMode.NONE) + val webtoonNavInverted: Preference = preferenceStore.getEnum( + "reader_tapping_inverted_webtoon", + TappingInvertMode.NONE, + ) - fun showNavigationOverlayNewUser() = preferenceStore.getBoolean("reader_navigation_overlay_new_user", true) + val showNavigationOverlayNewUser: Preference = preferenceStore.getBoolean( + "reader_navigation_overlay_new_user", + true, + ) - fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false) + val showNavigationOverlayOnStart: Preference = preferenceStore.getBoolean( + "reader_navigation_overlay_on_start", + false, + ) // endregion diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt index 4ae646e3e..6a9deec6e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt @@ -61,7 +61,7 @@ open class ReaderPageImageView @JvmOverloads constructor( ) : FrameLayout(context, attrs, defStyleAttrs, defStyleRes) { private val alwaysDecodeLongStripWithSSIV by lazy { - Injekt.get().alwaysDecodeLongStripWithSSIV().get() + Injekt.get().alwaysDecodeLongStripWithSSIV.get() } private var pageView: View? = null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt index c84f8f51b..302900787 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt @@ -46,30 +46,30 @@ abstract class ViewerConfig(readerPreferences: ReaderPreferences, private val sc protected set init { - readerPreferences.readWithLongTap() + readerPreferences.readWithLongTap .register({ longTapEnabled = it }) - readerPreferences.pageTransitions() + readerPreferences.pageTransitions .register({ usePageTransitions = it }) - readerPreferences.doubleTapAnimSpeed() + readerPreferences.doubleTapAnimSpeed .register({ doubleTapAnimDuration = it }) - readerPreferences.readWithVolumeKeys() + readerPreferences.readWithVolumeKeys .register({ volumeKeysEnabled = it }) - readerPreferences.readWithVolumeKeysInverted() + readerPreferences.readWithVolumeKeysInverted .register({ volumeKeysInverted = it }) - readerPreferences.alwaysShowChapterTransition() + readerPreferences.alwaysShowChapterTransition .register({ alwaysShowChapterTransition = it }) - forceNavigationOverlay = readerPreferences.showNavigationOverlayNewUser().get() + forceNavigationOverlay = readerPreferences.showNavigationOverlayNewUser.get() if (forceNavigationOverlay) { - readerPreferences.showNavigationOverlayNewUser().set(false) + readerPreferences.showNavigationOverlayNewUser.set(false) } - readerPreferences.showNavigationOverlayOnStart() + readerPreferences.showNavigationOverlayOnStart .register({ navigationOverlayOnStart = it }) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt index b319fd928..d73f677ac 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt @@ -25,7 +25,7 @@ class PagerConfig( readerPreferences: ReaderPreferences = Injekt.get(), ) : ViewerConfig(readerPreferences, scope) { - var theme = readerPreferences.readerTheme().get() + var theme = readerPreferences.readerTheme.get() private set var automaticBackground = false @@ -49,7 +49,7 @@ class PagerConfig( private set init { - readerPreferences.readerTheme() + readerPreferences.readerTheme .register( { theme = it @@ -58,32 +58,32 @@ class PagerConfig( { imagePropertyChangedListener?.invoke() }, ) - readerPreferences.imageScaleType() + readerPreferences.imageScaleType .register({ imageScaleType = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.zoomStart() + readerPreferences.zoomStart .register({ zoomTypeFromPreference(it) }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.cropBorders() + readerPreferences.cropBorders .register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.navigateToPan() + readerPreferences.navigateToPan .register({ navigateToPan = it }) - readerPreferences.landscapeZoom() + readerPreferences.landscapeZoom .register({ landscapeZoom = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.navigationModePager() + readerPreferences.navigationModePager .register({ navigationMode = it }, { updateNavigation(navigationMode) }) - readerPreferences.pagerNavInverted() + readerPreferences.pagerNavInverted .register({ tappingInverted = it }, { navigator.invertMode = it }) - readerPreferences.pagerNavInverted().changes() + readerPreferences.pagerNavInverted.changes() .drop(1) .onEach { navigationModeChangedListener?.invoke() } .launchIn(scope) - readerPreferences.dualPageSplitPaged() + readerPreferences.dualPageSplitPaged .register( { dualPageSplit = it }, { @@ -92,16 +92,16 @@ class PagerConfig( }, ) - readerPreferences.dualPageInvertPaged() + readerPreferences.dualPageInvertPaged .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.dualPageRotateToFit() + readerPreferences.dualPageRotateToFit .register( { dualPageRotateToFit = it }, { imagePropertyChangedListener?.invoke() }, ) - readerPreferences.dualPageRotateToFitInvert() + readerPreferences.dualPageRotateToFitInvert .register( { dualPageRotateToFitInvert = it }, { imagePropertyChangedListener?.invoke() }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt index 164c4939d..278a3d938 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt @@ -42,56 +42,56 @@ class WebtoonConfig( var doubleTapZoomChangedListener: ((Boolean) -> Unit)? = null - val theme = readerPreferences.readerTheme().get() + val theme = readerPreferences.readerTheme.get() init { - readerPreferences.cropBordersWebtoon() + readerPreferences.cropBordersWebtoon .register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.webtoonSidePadding() + readerPreferences.webtoonSidePadding .register({ sidePadding = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.navigationModeWebtoon() + readerPreferences.navigationModeWebtoon .register({ navigationMode = it }, { updateNavigation(it) }) - readerPreferences.webtoonNavInverted() + readerPreferences.webtoonNavInverted .register({ tappingInverted = it }, { navigator.invertMode = it }) - readerPreferences.webtoonNavInverted().changes() + readerPreferences.webtoonNavInverted.changes() .drop(1) .onEach { navigationModeChangedListener?.invoke() } .launchIn(scope) - readerPreferences.dualPageSplitWebtoon() + readerPreferences.dualPageSplitWebtoon .register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.dualPageInvertWebtoon() + readerPreferences.dualPageInvertWebtoon .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() }) - readerPreferences.dualPageRotateToFitWebtoon() + readerPreferences.dualPageRotateToFitWebtoon .register( { dualPageRotateToFit = it }, { imagePropertyChangedListener?.invoke() }, ) - readerPreferences.dualPageRotateToFitInvertWebtoon() + readerPreferences.dualPageRotateToFitInvertWebtoon .register( { dualPageRotateToFitInvert = it }, { imagePropertyChangedListener?.invoke() }, ) - readerPreferences.webtoonDisableZoomOut() + readerPreferences.webtoonDisableZoomOut .register( { zoomOutDisabled = it }, { zoomPropertyChangedListener?.invoke(it) }, ) - readerPreferences.webtoonDoubleTapZoomEnabled() + readerPreferences.webtoonDoubleTapZoomEnabled .register( { doubleTapZoom = it }, { doubleTapZoomChangedListener?.invoke(it) }, ) - readerPreferences.readerTheme().changes() + readerPreferences.readerTheme.changes() .drop(1) .distinctUntilChanged() .onEach { themeChangedListener?.invoke() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 9d2dac482..33d21d1eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -74,7 +74,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr private val threshold: Int = Injekt.get() - .readerHideThreshold() + .readerHideThreshold .get() .threshold diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt index b5096814b..9b88cc352 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt @@ -85,9 +85,9 @@ class StatsScreenModel( } private fun getGlobalUpdateItemCount(libraryManga: List): Int { - val includedCategories = preferences.updateCategories().get().map { it.toLong() } - val excludedCategories = preferences.updateCategoriesExclude().get().map { it.toLong() } - val updateRestrictions = preferences.autoUpdateMangaRestrictions().get() + val includedCategories = preferences.updateCategories.get().map { it.toLong() } + val excludedCategories = preferences.updateCategoriesExclude.get().map { it.toLong() } + val updateRestrictions = preferences.autoUpdateMangaRestrictions.get() return libraryManga.filter { val included = includedCategories.isEmpty() || it.categories.intersect(includedCategories).isNotEmpty() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt index 9836ee274..8e86d1716 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt @@ -72,7 +72,7 @@ class UpdatesScreenModel( private val _events: Channel = Channel(Int.MAX_VALUE) val events: Flow = _events.receiveAsFlow() - val lastUpdated by libraryPreferences.lastUpdatedTimestamp().asState(screenModelScope) + val lastUpdated by libraryPreferences.lastUpdatedTimestamp.asState(screenModelScope) // First and last selected index in list private val selectedPositions: Array = arrayOf(-1, -1) @@ -415,16 +415,16 @@ class UpdatesScreenModel( } fun resetNewUpdatesCount() { - libraryPreferences.newUpdatesCount().set(0) + libraryPreferences.newUpdatesCount.set(0) } private fun getUpdatesItemPreferenceFlow(): Flow { return combine( - updatesPreferences.filterDownloaded().changes(), - updatesPreferences.filterUnread().changes(), - updatesPreferences.filterStarted().changes(), - updatesPreferences.filterBookmarked().changes(), - updatesPreferences.filterExcludedScanlators().changes(), + updatesPreferences.filterDownloaded.changes(), + updatesPreferences.filterUnread.changes(), + updatesPreferences.filterStarted.changes(), + updatesPreferences.filterBookmarked.changes(), + updatesPreferences.filterExcludedScanlators.changes(), ) { downloaded, unread, started, bookmarked, excludedScanlators -> ItemPreferences( filterDownloaded = downloaded, diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt index 2312a1761..4902671f3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt @@ -44,7 +44,7 @@ class CrashLogUtil( return """ App ID: ${BuildConfig.APPLICATION_ID} App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}, ${BuildConfig.BUILD_TIME}) - Installation ID: ${preferences.installationId().get()} + Installation ID: ${preferences.installationId.get()} Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}; build ${Build.DISPLAY}) Device brand: ${Build.BRAND} Device manufacturer: ${Build.MANUFACTURER} diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 83b8b8325..ef0e41a41 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -107,8 +107,8 @@ fun Context.createFileInCacheDir(name: String): File { fun Context.createReaderThemeContext(): Context { val preferences = Injekt.get() val readerPreferences = Injekt.get() - val themeMode = preferences.themeMode().get() - val isDarkBackground = when (readerPreferences.readerTheme().get()) { + val themeMode = preferences.themeMode.get() + val isDarkBackground = when (readerPreferences.readerTheme.get()) { 1, 2 -> true // Black, Gray 3 -> when (themeMode) { // Automatic bg uses activity background by default ThemeMode.SYSTEM -> applicationContext.isNightMode() @@ -124,7 +124,7 @@ fun Context.createReaderThemeContext(): Context { val wrappedContext = ContextThemeWrapper(this, R.style.Theme_Tachiyomi) wrappedContext.applyOverrideConfiguration(overrideConf) - ThemingDelegate.getThemeResIds(preferences.appTheme().get(), preferences.themeDarkAmoled().get()) + ThemingDelegate.getThemeResIds(preferences.appTheme.get(), preferences.themeDarkAmoled.get()) .forEach { wrappedContext.theme.applyStyle(it, true) } return wrappedContext } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt index 141b65c0b..1a0fd0faa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt @@ -25,7 +25,7 @@ fun Configuration.isTabletUi(): Boolean { // TODO: move the logic to `isTabletUi()` when main activity is rewritten in Compose fun Context.prepareTabletUiContext(): Context { val configuration = resources.configuration - val expected = when (Injekt.get().tabletUiMode().get()) { + val expected = when (Injekt.get().tabletUiMode.get()) { TabletUiMode.AUTOMATIC -> configuration.smallestScreenWidthDp >= when (configuration.orientation) { Configuration.ORIENTATION_PORTRAIT -> TABLET_UI_MIN_SCREEN_WIDTH_PORTRAIT_DP diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/TachiyomiTextInputEditText.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/TachiyomiTextInputEditText.kt index a571b68fa..f6b58026a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/TachiyomiTextInputEditText.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/TachiyomiTextInputEditText.kt @@ -49,7 +49,7 @@ class TachiyomiTextInputEditText @JvmOverloads constructor( * if [BasePreferences.incognitoMode] is true. Some IMEs may not respect this flag. */ fun EditText.setIncognito(viewScope: CoroutineScope) { - Injekt.get().incognitoMode().changes() + Injekt.get().incognitoMode.changes() .onEach { imeOptions = if (it) { imeOptions or EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING diff --git a/app/src/main/java/mihon/core/migration/migrations/CategoryPreferencesCleanupMigration.kt b/app/src/main/java/mihon/core/migration/migrations/CategoryPreferencesCleanupMigration.kt index 9958e1ac6..0bcbd2e6c 100644 --- a/app/src/main/java/mihon/core/migration/migrations/CategoryPreferencesCleanupMigration.kt +++ b/app/src/main/java/mihon/core/migration/migrations/CategoryPreferencesCleanupMigration.kt @@ -17,17 +17,17 @@ class CategoryPreferencesCleanupMigration : Migration { val getCategories = migrationContext.get() ?: return@withIOContext false val allCategories = getCategories.await().map { it.id.toString() }.toSet() - val defaultCategory = libraryPreferences.defaultCategory().get() + val defaultCategory = libraryPreferences.defaultCategory.get() if (defaultCategory.toString() !in allCategories) { - libraryPreferences.defaultCategory().delete() + libraryPreferences.defaultCategory.delete() } val categoryPreferences = listOf( - libraryPreferences.updateCategories(), - libraryPreferences.updateCategoriesExclude(), - downloadPreferences.removeExcludeCategories(), - downloadPreferences.downloadNewChapterCategories(), - downloadPreferences.downloadNewChapterCategoriesExclude(), + libraryPreferences.updateCategories, + libraryPreferences.updateCategoriesExclude, + downloadPreferences.removeExcludeCategories, + downloadPreferences.downloadNewChapterCategories, + downloadPreferences.downloadNewChapterCategoriesExclude, ) categoryPreferences.forEach { preference -> val ids = preference.get() diff --git a/app/src/main/java/mihon/core/migration/migrations/InstallationIdMigration.kt b/app/src/main/java/mihon/core/migration/migrations/InstallationIdMigration.kt index c9c3836ac..a19d5ff46 100644 --- a/app/src/main/java/mihon/core/migration/migrations/InstallationIdMigration.kt +++ b/app/src/main/java/mihon/core/migration/migrations/InstallationIdMigration.kt @@ -11,7 +11,7 @@ class InstallationIdMigration : Migration { @OptIn(ExperimentalUuidApi::class) override suspend fun invoke(migrationContext: MigrationContext): Boolean { - val installationId = migrationContext.get()?.installationId() ?: return false + val installationId = migrationContext.get()?.installationId ?: return false if (!installationId.isSet()) installationId.set(FeatureFlags.newInstallationId()) return true } diff --git a/app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt b/app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt index cacba046f..35b800a4b 100644 --- a/app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt +++ b/app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt @@ -16,7 +16,7 @@ class TrustExtensionRepositoryMigration : Migration { val sourcePreferences = migrationContext.get() ?: return@withIOContext false val extensionRepositoryRepository = migrationContext.get() ?: return@withIOContext false - for ((index, source) in sourcePreferences.extensionRepos().get().withIndex()) { + for ((index, source) in sourcePreferences.extensionRepos.get().withIndex()) { try { extensionRepositoryRepository.upsertRepo( source, @@ -29,7 +29,7 @@ class TrustExtensionRepositoryMigration : Migration { logcat(LogPriority.ERROR, e) { "Error Migrating Extension Repo with baseUrl: $source" } } } - sourcePreferences.extensionRepos().delete() + sourcePreferences.extensionRepos.delete() return@withIOContext true } } diff --git a/app/src/main/java/mihon/domain/migration/usecases/MigrateMangaUseCase.kt b/app/src/main/java/mihon/domain/migration/usecases/MigrateMangaUseCase.kt index 7106af31d..f5e4c792c 100644 --- a/app/src/main/java/mihon/domain/migration/usecases/MigrateMangaUseCase.kt +++ b/app/src/main/java/mihon/domain/migration/usecases/MigrateMangaUseCase.kt @@ -43,7 +43,7 @@ class MigrateMangaUseCase( suspend operator fun invoke(current: Manga, target: Manga, replace: Boolean) { val targetSource = sourceManager.get(target.source) ?: return val currentSource = sourceManager.get(current.source) - val flags = sourcePreferences.migrationFlags().get() + val flags = sourcePreferences.migrationFlags.get() try { val chapters = targetSource.getChapterList(target.toSManga()) diff --git a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt index bb93b2f64..32a8e64db 100644 --- a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt +++ b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt @@ -340,10 +340,10 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { } private fun initSources() { - val languages = sourcePreferences.enabledLanguages().get() - val pinnedSources = sourcePreferences.pinnedSources().get().mapNotNull { it.toLongOrNull() } - val includedSources = sourcePreferences.migrationSources().get() - val disabledSources = sourcePreferences.disabledSources().get() + val languages = sourcePreferences.enabledLanguages.get() + val pinnedSources = sourcePreferences.pinnedSources.get().mapNotNull { it.toLongOrNull() } + val includedSources = sourcePreferences.migrationSources.get() + val disabledSources = sourcePreferences.disabledSources.get() .mapNotNull { it.toLongOrNull() } val sources = sourceManager.getCatalogueSources() .asSequence() @@ -382,8 +382,8 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { } fun toggleSelection(config: SelectionConfig) { - val pinnedSources = sourcePreferences.pinnedSources().get().mapNotNull { it.toLongOrNull() } - val disabledSources = sourcePreferences.disabledSources().get().mapNotNull { it.toLongOrNull() } + val pinnedSources = sourcePreferences.pinnedSources.get().mapNotNull { it.toLongOrNull() } + val disabledSources = sourcePreferences.disabledSources.get().mapNotNull { it.toLongOrNull() } val isSelected: (Long) -> Boolean = { when (config) { SelectionConfig.All -> true @@ -413,7 +413,7 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { state.value.sources .filter { source -> source.isSelected } .map { source -> source.source.id } - .let { sources -> sourcePreferences.migrationSources().set(sources) } + .let { sources -> sourcePreferences.migrationSources.set(sources) } } data class State( diff --git a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreenSheet.kt b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreenSheet.kt index 20d97b0e8..28cd1c5f6 100644 --- a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreenSheet.kt +++ b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreenSheet.kt @@ -53,7 +53,7 @@ fun MigrationConfigScreenSheet( onStartMigration: (extraSearchQuery: String?) -> Unit, ) { var extraSearchQuery by rememberSaveable { mutableStateOf("") } - val migrationFlags by preferences.migrationFlags().collectAsState() + val migrationFlags by preferences.migrationFlags.collectAsState() AdaptiveSheet(onDismissRequest = onDismissRequest) { Column(modifier = Modifier.fillMaxWidth()) { Column( @@ -86,7 +86,7 @@ fun MigrationConfigScreenSheet( FilterChip( selected = selected, onClick = { - preferences.migrationFlags().getAndSet { currentFlags -> + preferences.migrationFlags.getAndSet { currentFlags -> if (flag in currentFlags) { currentFlags - flag } else { @@ -112,7 +112,7 @@ fun MigrationConfigScreenSheet( subtitle = null, checked = removeDownloads, onClick = { - preferences.migrationFlags().getAndSet { + preferences.migrationFlags.getAndSet { if (removeDownloads) { it - MigrationFlag.REMOVE_DOWNLOAD } else { @@ -140,24 +140,24 @@ fun MigrationConfigScreenSheet( MigrationSheetSwitchItem( title = stringResource(MR.strings.migrationConfigScreen_hideUnmatchedTitle), subtitle = null, - preference = preferences.migrationHideUnmatched(), + preference = preferences.migrationHideUnmatched, ) MigrationSheetSwitchItem( title = stringResource(MR.strings.migrationConfigScreen_hideWithoutUpdatesTitle), subtitle = stringResource(MR.strings.migrationConfigScreen_hideWithoutUpdatesSubtitle), - preference = preferences.migrationHideWithoutUpdates(), + preference = preferences.migrationHideWithoutUpdates, ) MigrationSheetDividerItem() MigrationSheetWarningItem(stringResource(MR.strings.migrationConfigScreen_enhancedOptionsWarning)) MigrationSheetSwitchItem( title = stringResource(MR.strings.migrationConfigScreen_deepSearchModeTitle), subtitle = stringResource(MR.strings.migrationConfigScreen_deepSearchModeSubtitle), - preference = preferences.migrationDeepSearchMode(), + preference = preferences.migrationDeepSearchMode, ) MigrationSheetSwitchItem( title = stringResource(MR.strings.migrationConfigScreen_prioritizeByChaptersTitle), subtitle = stringResource(MR.strings.migrationConfigScreen_prioritizeByChaptersSubtitle), - preference = preferences.migrationPrioritizeByChapters(), + preference = preferences.migrationPrioritizeByChapters, ) } HorizontalDivider() diff --git a/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt b/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt index ffc519c56..f57e2123d 100644 --- a/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt +++ b/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt @@ -143,7 +143,7 @@ private class MigrateDialogScreenModel( if (applicable) add(it) } } - val selectedFlags = sourcePreference.migrationFlags().get() + val selectedFlags = sourcePreference.migrationFlags.get() mutableState.update { State( current = current, @@ -167,7 +167,7 @@ private class MigrateDialogScreenModel( val state = state.value val current = state.current ?: return val target = state.target ?: return - sourcePreference.migrationFlags().set(state.selectedFlags) + sourcePreference.migrationFlags.set(state.selectedFlags) mutableState.update { it.copy(isMigrating = true) } migrateManga(current, target, replace) mutableState.update { it.copy(isMigrating = false, isMigrated = true) } diff --git a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt index 14724ba45..a63560ba1 100644 --- a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt +++ b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt @@ -60,8 +60,8 @@ class MigrationListScreenModel( val items inline get() = state.value.items - private val hideUnmatched = preferences.migrationHideUnmatched().get() - private val hideWithoutUpdates = preferences.migrationHideWithoutUpdates().get() + private val hideUnmatched = preferences.migrationHideUnmatched.get() + private val hideWithoutUpdates = preferences.migrationHideWithoutUpdates.get() private val navigateBackChannel = Channel() val navigateBackEvent = navigateBackChannel.receiveAsFlow() @@ -110,10 +110,10 @@ class MigrationListScreenModel( } private suspend fun runMigrations(mangas: List) { - val prioritizeByChapters = preferences.migrationPrioritizeByChapters().get() - val deepSearchMode = preferences.migrationDeepSearchMode().get() + val prioritizeByChapters = preferences.migrationPrioritizeByChapters.get() + val deepSearchMode = preferences.migrationDeepSearchMode.get() - val sources = preferences.migrationSources().get() + val sources = preferences.migrationSources.get() .mapNotNull { sourceManager.get(it) as? CatalogueSource } for (manga in mangas) { diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt index ebf5692d8..cdb0098fb 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/PrivacyPreferences.kt @@ -1,11 +1,12 @@ package eu.kanade.tachiyomi.core.security +import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore class PrivacyPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun crashlytics() = preferenceStore.getBoolean("crashlytics", true) + val crashlytics: Preference = preferenceStore.getBoolean("crashlytics", true) - fun analytics() = preferenceStore.getBoolean("analytics", true) + val analytics: Preference = preferenceStore.getBoolean("analytics", true) } diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt index 274f0c592..a2c2d2d76 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt @@ -7,22 +7,25 @@ import tachiyomi.core.common.preference.getEnum import tachiyomi.i18n.MR class SecurityPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun useAuthenticator() = preferenceStore.getBoolean("use_biometric_lock", false) + val useAuthenticator: Preference = preferenceStore.getBoolean("use_biometric_lock", false) - fun lockAppAfter() = preferenceStore.getInt("lock_app_after", 0) + val lockAppAfter: Preference = preferenceStore.getInt("lock_app_after", 0) - fun secureScreen() = preferenceStore.getEnum("secure_screen_v2", SecureScreenMode.INCOGNITO) + val secureScreen: Preference = preferenceStore.getEnum( + "secure_screen_v2", + SecureScreenMode.INCOGNITO, + ) - fun hideNotificationContent() = preferenceStore.getBoolean("hide_notification_content", false) + val hideNotificationContent: Preference = preferenceStore.getBoolean("hide_notification_content", false) /** * For app lock. Will be set when there is a pending timed lock. - * Otherwise this pref should be deleted. + * Otherwise, this pref should be deleted. */ - fun lastAppClosed() = preferenceStore.getLong( + val lastAppClosed: Preference = preferenceStore.getLong( Preference.appStateKey("last_app_closed"), 0, ) diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt index 0148ca862..202c39063 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -36,14 +36,14 @@ class NetworkHelper( .addNetworkInterceptor(IgnoreGzipInterceptor()) .addNetworkInterceptor(BrotliInterceptor) - if (preferences.verboseLogging().get()) { + if (preferences.verboseLogging.get()) { val httpLoggingInterceptor = HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.HEADERS } builder.addNetworkInterceptor(httpLoggingInterceptor) } - when (preferences.dohProvider().get()) { + when (preferences.dohProvider.get()) { PREF_DOH_CLOUDFLARE -> builder.dohCloudflare() PREF_DOH_GOOGLE -> builder.dohGoogle() PREF_DOH_ADGUARD -> builder.dohAdGuard() @@ -75,5 +75,5 @@ class NetworkHelper( @Suppress("UNUSED") val cloudflareClient: OkHttpClient = client - fun defaultUserAgentProvider() = preferences.defaultUserAgent().get().trim() + fun defaultUserAgentProvider() = preferences.defaultUserAgent.get().trim() } diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt index d2034be86..8b853daf8 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt @@ -4,22 +4,16 @@ import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore class NetworkPreferences( - private val preferenceStore: PreferenceStore, - private val verboseLogging: Boolean = false, + preferenceStore: PreferenceStore, + verboseLoggingDefault: Boolean = false, ) { - fun verboseLogging(): Preference { - return preferenceStore.getBoolean("verbose_logging", verboseLogging) - } + val verboseLogging: Preference = preferenceStore.getBoolean("verbose_logging", verboseLoggingDefault) - fun dohProvider(): Preference { - return preferenceStore.getInt("doh_provider", -1) - } + val dohProvider: Preference = preferenceStore.getInt("doh_provider", -1) - fun defaultUserAgent(): Preference { - return preferenceStore.getString( - "default_user_agent", - "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36", - ) - } + val defaultUserAgent: Preference = preferenceStore.getString( + "default_user_agent", + "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36", + ) } diff --git a/domain/src/main/java/mihon/domain/chapter/interactor/FilterChaptersForDownload.kt b/domain/src/main/java/mihon/domain/chapter/interactor/FilterChaptersForDownload.kt index 515bdbde3..0250312f0 100644 --- a/domain/src/main/java/mihon/domain/chapter/interactor/FilterChaptersForDownload.kt +++ b/domain/src/main/java/mihon/domain/chapter/interactor/FilterChaptersForDownload.kt @@ -29,13 +29,13 @@ class FilterChaptersForDownload( suspend fun await(manga: Manga, newChapters: List): List { if ( newChapters.isEmpty() || - !downloadPreferences.downloadNewChapters().get() || + !downloadPreferences.downloadNewChapters.get() || !manga.shouldDownloadNewChapters() ) { return emptyList() } - if (!downloadPreferences.downloadNewUnreadChaptersOnly().get()) return newChapters + if (!downloadPreferences.downloadNewUnreadChaptersOnly.get()) return newChapters val readChapterNumbers = getChaptersByMangaId.await(manga.id) .asSequence() @@ -56,8 +56,8 @@ class FilterChaptersForDownload( if (!favorite) return false val categories = getCategories.await(id).map { it.id }.ifEmpty { listOf(DEFAULT_CATEGORY_ID) } - val includedCategories = downloadPreferences.downloadNewChapterCategories().get().map { it.toLong() } - val excludedCategories = downloadPreferences.downloadNewChapterCategoriesExclude().get().map { it.toLong() } + val includedCategories = downloadPreferences.downloadNewChapterCategories.get().map { it.toLong() } + val excludedCategories = downloadPreferences.downloadNewChapterCategoriesExclude.get().map { it.toLong() } return when { // Default Download from all categories diff --git a/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt b/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt index 41f29392d..954808c2e 100644 --- a/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt @@ -4,10 +4,13 @@ import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore class BackupPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun backupInterval() = preferenceStore.getInt("backup_interval", 12) + val backupInterval: Preference = preferenceStore.getInt("backup_interval", 12) - fun lastAutoBackupTimestamp() = preferenceStore.getLong(Preference.appStateKey("last_auto_backup_timestamp"), 0L) + val lastAutoBackupTimestamp: Preference = preferenceStore.getLong( + Preference.appStateKey("last_auto_backup_timestamp"), + 0L, + ) } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt index b6b15b83e..8dba6e4bd 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt @@ -14,7 +14,7 @@ class CreateCategoryWithName( private val initialFlags: Long get() { - val sort = preferences.sortingMode().get() + val sort = preferences.sortingMode.get() return sort.type.flag or sort.direction.flag } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt index 279b1c9af..020f02b2f 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/DeleteCategory.kt @@ -30,17 +30,17 @@ class DeleteCategory( ) } - val defaultCategory = libraryPreferences.defaultCategory().get() + val defaultCategory = libraryPreferences.defaultCategory.get() if (defaultCategory == categoryId.toInt()) { - libraryPreferences.defaultCategory().delete() + libraryPreferences.defaultCategory.delete() } val categoryPreferences = listOf( - libraryPreferences.updateCategories(), - libraryPreferences.updateCategoriesExclude(), - downloadPreferences.removeExcludeCategories(), - downloadPreferences.downloadNewChapterCategories(), - downloadPreferences.downloadNewChapterCategoriesExclude(), + libraryPreferences.updateCategories, + libraryPreferences.updateCategoriesExclude, + downloadPreferences.removeExcludeCategories, + downloadPreferences.downloadNewChapterCategories, + downloadPreferences.downloadNewChapterCategoriesExclude, ) val categoryIdString = categoryId.toString() categoryPreferences.forEach { preference -> diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt index 4032206c3..4bf262cc2 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt @@ -10,7 +10,7 @@ class ResetCategoryFlags( ) { suspend fun await() { - val sort = preferences.sortingMode().get() + val sort = preferences.sortingMode.get() categoryRepository.updateAllFlags(sort.type + sort.direction) } } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt index 32e23148f..af95abf3b 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt @@ -8,6 +8,6 @@ class SetDisplayMode( ) { fun await(display: LibraryDisplayMode) { - preferences.displayMode().set(display) + preferences.displayMode.set(display) } } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt index 85196f771..3e88f1769 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt @@ -17,9 +17,9 @@ class SetSortModeForCategory( val category = categoryId?.let { categoryRepository.get(it) } val flags = (category?.flags ?: 0) + type + direction if (type == LibrarySort.Type.Random) { - preferences.randomSortSeed().set(Random.nextInt()) + preferences.randomSortSeed.set(Random.nextInt()) } - if (category != null && preferences.categorizedDisplaySettings().get()) { + if (category != null && preferences.categorizedDisplaySettings.get()) { categoryRepository.updatePartial( CategoryUpdate( id = category.id, @@ -27,7 +27,7 @@ class SetSortModeForCategory( ), ) } else { - preferences.sortingMode().set(LibrarySort(type, direction)) + preferences.sortingMode.set(LibrarySort(type, direction)) categoryRepository.updateAllFlags(flags) } } diff --git a/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt b/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt index 4c968b39a..47ea4329e 100644 --- a/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt +++ b/domain/src/main/java/tachiyomi/domain/chapter/interactor/SetMangaDefaultChapterFlags.kt @@ -17,12 +17,12 @@ class SetMangaDefaultChapterFlags( with(libraryPreferences) { setMangaChapterFlags.awaitSetAllFlags( mangaId = manga.id, - unreadFilter = filterChapterByRead().get(), - downloadedFilter = filterChapterByDownloaded().get(), - bookmarkedFilter = filterChapterByBookmarked().get(), - sortingMode = sortChapterBySourceOrNumber().get(), - sortingDirection = sortChapterByAscendingOrDescending().get(), - displayMode = displayChapterByNameOrNumber().get(), + unreadFilter = filterChapterByRead.get(), + downloadedFilter = filterChapterByDownloaded.get(), + bookmarkedFilter = filterChapterByBookmarked.get(), + sortingMode = sortChapterBySourceOrNumber.get(), + sortingDirection = sortChapterByAscendingOrDescending.get(), + displayMode = displayChapterByNameOrNumber.get(), ) } } diff --git a/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt b/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt index 269d788a4..bf5b84ff4 100644 --- a/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/download/service/DownloadPreferences.kt @@ -1,45 +1,57 @@ package tachiyomi.domain.download.service +import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore class DownloadPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun downloadOnlyOverWifi() = preferenceStore.getBoolean( + val downloadOnlyOverWifi: Preference = preferenceStore.getBoolean( "pref_download_only_over_wifi_key", true, ) - fun saveChaptersAsCBZ() = preferenceStore.getBoolean("save_chapter_as_cbz", true) + val saveChaptersAsCBZ: Preference = preferenceStore.getBoolean("save_chapter_as_cbz", true) - fun splitTallImages() = preferenceStore.getBoolean("split_tall_images", true) + val splitTallImages: Preference = preferenceStore.getBoolean("split_tall_images", true) - fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0) + val autoDownloadWhileReading: Preference = preferenceStore.getInt("auto_download_while_reading", 0) - fun removeAfterReadSlots() = preferenceStore.getInt("remove_after_read_slots", -1) + val removeAfterReadSlots: Preference = preferenceStore.getInt("remove_after_read_slots", -1) - fun removeAfterMarkedAsRead() = preferenceStore.getBoolean( + val removeAfterMarkedAsRead: Preference = preferenceStore.getBoolean( "pref_remove_after_marked_as_read_key", false, ) - fun removeBookmarkedChapters() = preferenceStore.getBoolean("pref_remove_bookmarked", false) + val removeBookmarkedChapters: Preference = preferenceStore.getBoolean("pref_remove_bookmarked", false) - fun removeExcludeCategories() = preferenceStore.getStringSet(REMOVE_EXCLUDE_CATEGORIES_PREF_KEY, emptySet()) + val removeExcludeCategories: Preference> = preferenceStore.getStringSet( + REMOVE_EXCLUDE_CATEGORIES_PREF_KEY, + emptySet(), + ) - fun downloadNewChapters() = preferenceStore.getBoolean("download_new", false) + val downloadNewChapters: Preference = preferenceStore.getBoolean("download_new", false) - fun downloadNewChapterCategories() = preferenceStore.getStringSet(DOWNLOAD_NEW_CATEGORIES_PREF_KEY, emptySet()) + val downloadNewChapterCategories: Preference> = preferenceStore.getStringSet( + DOWNLOAD_NEW_CATEGORIES_PREF_KEY, + emptySet(), + ) - fun downloadNewChapterCategoriesExclude() = - preferenceStore.getStringSet(DOWNLOAD_NEW_CATEGORIES_EXCLUDE_PREF_KEY, emptySet()) + val downloadNewChapterCategoriesExclude: Preference> = preferenceStore.getStringSet( + DOWNLOAD_NEW_CATEGORIES_EXCLUDE_PREF_KEY, + emptySet(), + ) - fun downloadNewUnreadChaptersOnly() = preferenceStore.getBoolean("download_new_unread_chapters_only", false) + val downloadNewUnreadChaptersOnly: Preference = preferenceStore.getBoolean( + "download_new_unread_chapters_only", + false, + ) - fun parallelSourceLimit() = preferenceStore.getInt("download_parallel_source_limit", 5) + val parallelSourceLimit: Preference = preferenceStore.getInt("download_parallel_source_limit", 5) - fun parallelPageLimit() = preferenceStore.getInt("download_parallel_page_limit", 5) + val parallelPageLimit: Preference = preferenceStore.getInt("download_parallel_page_limit", 5) companion object { private const val REMOVE_EXCLUDE_CATEGORIES_PREF_KEY = "remove_exclude_categories" diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt index a2e979fac..a7f46166c 100644 --- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt @@ -12,36 +12,39 @@ class LibraryPreferences( private val preferenceStore: PreferenceStore, ) { - fun displayMode() = preferenceStore.getObjectFromString( + val displayMode: Preference = preferenceStore.getObjectFromString( "pref_display_mode_library", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize, ) - fun sortingMode() = preferenceStore.getObjectFromString( + val sortingMode: Preference = preferenceStore.getObjectFromString( "library_sorting_mode", LibrarySort.default, LibrarySort.Serializer::serialize, LibrarySort.Serializer::deserialize, ) - fun randomSortSeed() = preferenceStore.getInt("library_random_sort_seed", 0) + val randomSortSeed: Preference = preferenceStore.getInt("library_random_sort_seed", 0) - fun portraitColumns() = preferenceStore.getInt("pref_library_columns_portrait_key", 0) + val portraitColumns: Preference = preferenceStore.getInt("pref_library_columns_portrait_key", 0) - fun landscapeColumns() = preferenceStore.getInt("pref_library_columns_landscape_key", 0) + val landscapeColumns: Preference = preferenceStore.getInt("pref_library_columns_landscape_key", 0) - fun lastUpdatedTimestamp() = preferenceStore.getLong(Preference.appStateKey("library_update_last_timestamp"), 0L) - fun autoUpdateInterval() = preferenceStore.getInt("pref_library_update_interval_key", 0) + val lastUpdatedTimestamp: Preference = preferenceStore.getLong( + Preference.appStateKey("library_update_last_timestamp"), + 0L, + ) + val autoUpdateInterval: Preference = preferenceStore.getInt("pref_library_update_interval_key", 0) - fun autoUpdateDeviceRestrictions() = preferenceStore.getStringSet( + val autoUpdateDeviceRestrictions: Preference> = preferenceStore.getStringSet( "library_update_restriction", setOf( DEVICE_ONLY_ON_WIFI, ), ) - fun autoUpdateMangaRestrictions() = preferenceStore.getStringSet( + val autoUpdateMangaRestrictions: Preference> = preferenceStore.getStringSet( "library_update_manga_restriction", setOf( MANGA_HAS_UNREAD, @@ -51,45 +54,48 @@ class LibraryPreferences( ), ) - fun autoUpdateMetadata() = preferenceStore.getBoolean("auto_update_metadata", false) + val autoUpdateMetadata: Preference = preferenceStore.getBoolean("auto_update_metadata", false) - fun showContinueReadingButton() = preferenceStore.getBoolean( + val showContinueReadingButton: Preference = preferenceStore.getBoolean( "display_continue_reading_button", false, ) - fun markDuplicateReadChapterAsRead() = preferenceStore.getStringSet("mark_duplicate_read_chapter_read", emptySet()) + val markDuplicateReadChapterAsRead: Preference> = preferenceStore.getStringSet( + "mark_duplicate_read_chapter_read", + emptySet(), + ) // region Filter - fun filterDownloaded() = preferenceStore.getEnum( + val filterDownloaded: Preference = preferenceStore.getEnum( "pref_filter_library_downloaded_v2", TriState.DISABLED, ) - fun filterUnread() = preferenceStore.getEnum("pref_filter_library_unread_v2", TriState.DISABLED) + val filterUnread: Preference = preferenceStore.getEnum("pref_filter_library_unread_v2", TriState.DISABLED) - fun filterStarted() = preferenceStore.getEnum( + val filterStarted: Preference = preferenceStore.getEnum( "pref_filter_library_started_v2", TriState.DISABLED, ) - fun filterBookmarked() = preferenceStore.getEnum( + val filterBookmarked: Preference = preferenceStore.getEnum( "pref_filter_library_bookmarked_v2", TriState.DISABLED, ) - fun filterCompleted() = preferenceStore.getEnum( + val filterCompleted: Preference = preferenceStore.getEnum( "pref_filter_library_completed_v2", TriState.DISABLED, ) - fun filterIntervalCustom() = preferenceStore.getEnum( + val filterIntervalCustom: Preference = preferenceStore.getEnum( "pref_filter_library_interval_custom", TriState.DISABLED, ) - fun filterTracking(id: Int) = preferenceStore.getEnum( + fun filterTracking(id: Int): Preference = preferenceStore.getEnum( "pref_filter_library_tracked_${id}_v2", TriState.DISABLED, ) @@ -98,101 +104,116 @@ class LibraryPreferences( // region Badges - fun downloadBadge() = preferenceStore.getBoolean("display_download_badge", false) + val downloadBadge: Preference = preferenceStore.getBoolean("display_download_badge", false) - fun unreadBadge() = preferenceStore.getBoolean("display_unread_badge", true) + val unreadBadge: Preference = preferenceStore.getBoolean("display_unread_badge", true) - fun localBadge() = preferenceStore.getBoolean("display_local_badge", true) + val localBadge: Preference = preferenceStore.getBoolean("display_local_badge", true) - fun languageBadge() = preferenceStore.getBoolean("display_language_badge", false) + val languageBadge: Preference = preferenceStore.getBoolean("display_language_badge", false) - fun newShowUpdatesCount() = preferenceStore.getBoolean("library_show_updates_count", true) - fun newUpdatesCount() = preferenceStore.getInt(Preference.appStateKey("library_unseen_updates_count"), 0) + val newShowUpdatesCount: Preference = preferenceStore.getBoolean("library_show_updates_count", true) + val newUpdatesCount: Preference = preferenceStore.getInt( + Preference.appStateKey("library_unseen_updates_count"), + 0, + ) // endregion // region Category - fun defaultCategory() = preferenceStore.getInt(DEFAULT_CATEGORY_PREF_KEY, -1) + val defaultCategory: Preference = preferenceStore.getInt(DEFAULT_CATEGORY_PREF_KEY, -1) - fun lastUsedCategory() = preferenceStore.getInt(Preference.appStateKey("last_used_category"), 0) + val lastUsedCategory: Preference = preferenceStore.getInt(Preference.appStateKey("last_used_category"), 0) - fun categoryTabs() = preferenceStore.getBoolean("display_category_tabs", true) + val categoryTabs: Preference = preferenceStore.getBoolean("display_category_tabs", true) - fun categoryNumberOfItems() = preferenceStore.getBoolean("display_number_of_items", false) + val categoryNumberOfItems: Preference = preferenceStore.getBoolean("display_number_of_items", false) - fun categorizedDisplaySettings() = preferenceStore.getBoolean("categorized_display", false) + val categorizedDisplaySettings: Preference = preferenceStore.getBoolean("categorized_display", false) - fun updateCategories() = preferenceStore.getStringSet(LIBRARY_UPDATE_CATEGORIES_PREF_KEY, emptySet()) + val updateCategories: Preference> = preferenceStore.getStringSet( + LIBRARY_UPDATE_CATEGORIES_PREF_KEY, + emptySet(), + ) - fun updateCategoriesExclude() = preferenceStore.getStringSet(LIBRARY_UPDATE_CATEGORIES_EXCLUDE_PREF_KEY, emptySet()) + val updateCategoriesExclude: Preference> = preferenceStore.getStringSet( + LIBRARY_UPDATE_CATEGORIES_EXCLUDE_PREF_KEY, + emptySet(), + ) // endregion // region Chapter - fun filterChapterByRead() = preferenceStore.getLong( + val filterChapterByRead: Preference = preferenceStore.getLong( "default_chapter_filter_by_read", Manga.SHOW_ALL, ) - fun filterChapterByDownloaded() = preferenceStore.getLong( + val filterChapterByDownloaded: Preference = preferenceStore.getLong( "default_chapter_filter_by_downloaded", Manga.SHOW_ALL, ) - fun filterChapterByBookmarked() = preferenceStore.getLong( + val filterChapterByBookmarked: Preference = preferenceStore.getLong( "default_chapter_filter_by_bookmarked", Manga.SHOW_ALL, ) // and upload date - fun sortChapterBySourceOrNumber() = preferenceStore.getLong( + val sortChapterBySourceOrNumber: Preference = preferenceStore.getLong( "default_chapter_sort_by_source_or_number", Manga.CHAPTER_SORTING_SOURCE, ) - fun displayChapterByNameOrNumber() = preferenceStore.getLong( + val displayChapterByNameOrNumber: Preference = preferenceStore.getLong( "default_chapter_display_by_name_or_number", Manga.CHAPTER_DISPLAY_NAME, ) - fun sortChapterByAscendingOrDescending() = preferenceStore.getLong( + val sortChapterByAscendingOrDescending: Preference = preferenceStore.getLong( "default_chapter_sort_by_ascending_or_descending", Manga.CHAPTER_SORT_DESC, ) fun setChapterSettingsDefault(manga: Manga) { - filterChapterByRead().set(manga.unreadFilterRaw) - filterChapterByDownloaded().set(manga.downloadedFilterRaw) - filterChapterByBookmarked().set(manga.bookmarkedFilterRaw) - sortChapterBySourceOrNumber().set(manga.sorting) - displayChapterByNameOrNumber().set(manga.displayMode) - sortChapterByAscendingOrDescending().set( + filterChapterByRead.set(manga.unreadFilterRaw) + filterChapterByDownloaded.set(manga.downloadedFilterRaw) + filterChapterByBookmarked.set(manga.bookmarkedFilterRaw) + sortChapterBySourceOrNumber.set(manga.sorting) + displayChapterByNameOrNumber.set(manga.displayMode) + sortChapterByAscendingOrDescending.set( if (manga.sortDescending()) Manga.CHAPTER_SORT_DESC else Manga.CHAPTER_SORT_ASC, ) } - fun autoClearChapterCache() = preferenceStore.getBoolean("auto_clear_chapter_cache", false) + val autoClearChapterCache: Preference = preferenceStore.getBoolean("auto_clear_chapter_cache", false) - fun hideMissingChapters() = preferenceStore.getBoolean("pref_hide_missing_chapter_indicators", false) + val hideMissingChapters: Preference = preferenceStore.getBoolean( + "pref_hide_missing_chapter_indicators", + false, + ) // endregion // region Swipe Actions - fun swipeToStartAction() = preferenceStore.getEnum( + val swipeToStartAction: Preference = preferenceStore.getEnum( "pref_chapter_swipe_end_action", ChapterSwipeAction.ToggleBookmark, ) - fun swipeToEndAction() = preferenceStore.getEnum( + val swipeToEndAction: Preference = preferenceStore.getEnum( "pref_chapter_swipe_start_action", ChapterSwipeAction.ToggleRead, ) - fun updateMangaTitles() = preferenceStore.getBoolean("pref_update_library_manga_titles", false) + val updateMangaTitles: Preference = preferenceStore.getBoolean("pref_update_library_manga_titles", false) - fun disallowNonAsciiFilenames() = preferenceStore.getBoolean("disallow_non_ascii_filenames", false) + val disallowNonAsciiFilenames: Preference = preferenceStore.getBoolean( + "disallow_non_ascii_filenames", + false, + ) // endregion diff --git a/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt b/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt index 4527fe89a..002d976fb 100644 --- a/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt +++ b/domain/src/main/java/tachiyomi/domain/storage/service/StorageManager.kt @@ -22,14 +22,14 @@ class StorageManager( private val scope = CoroutineScope(Dispatchers.IO) - private var baseDir: UniFile? = getBaseDir(storagePreferences.baseStorageDirectory().get()) + private var baseDir: UniFile? = getBaseDir(storagePreferences.baseStorageDirectory.get()) private val _changes: Channel = Channel(Channel.UNLIMITED) val changes = _changes.receiveAsFlow() .shareIn(scope, SharingStarted.Lazily, 1) init { - storagePreferences.baseStorageDirectory().changes() + storagePreferences.baseStorageDirectory.changes() .drop(1) .distinctUntilChanged() .onEach { uri -> diff --git a/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt b/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt index f29949cff..159134767 100644 --- a/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt @@ -5,9 +5,12 @@ import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.storage.FolderProvider class StoragePreferences( - private val folderProvider: FolderProvider, - private val preferenceStore: PreferenceStore, + folderProvider: FolderProvider, + preferenceStore: PreferenceStore, ) { - fun baseStorageDirectory() = preferenceStore.getString(Preference.appStateKey("storage_dir"), folderProvider.path()) + val baseStorageDirectory: Preference = preferenceStore.getString( + Preference.appStateKey("storage_dir"), + folderProvider.path(), + ) } diff --git a/domain/src/main/java/tachiyomi/domain/updates/service/UpdatesPreferences.kt b/domain/src/main/java/tachiyomi/domain/updates/service/UpdatesPreferences.kt index fa86de29b..3d2989126 100644 --- a/domain/src/main/java/tachiyomi/domain/updates/service/UpdatesPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/updates/service/UpdatesPreferences.kt @@ -1,34 +1,35 @@ package tachiyomi.domain.updates.service +import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.preference.TriState import tachiyomi.core.common.preference.getEnum class UpdatesPreferences( - private val preferenceStore: PreferenceStore, + preferenceStore: PreferenceStore, ) { - fun filterDownloaded() = preferenceStore.getEnum( + val filterDownloaded: Preference = preferenceStore.getEnum( "pref_filter_updates_downloaded", TriState.DISABLED, ) - fun filterUnread() = preferenceStore.getEnum( + val filterUnread: Preference = preferenceStore.getEnum( "pref_filter_updates_unread", TriState.DISABLED, ) - fun filterStarted() = preferenceStore.getEnum( + val filterStarted: Preference = preferenceStore.getEnum( "pref_filter_updates_started", TriState.DISABLED, ) - fun filterBookmarked() = preferenceStore.getEnum( + val filterBookmarked: Preference = preferenceStore.getEnum( "pref_filter_updates_bookmarked", TriState.DISABLED, ) - fun filterExcludedScanlators() = preferenceStore.getBoolean( + val filterExcludedScanlators: Preference = preferenceStore.getBoolean( "pref_filter_updates_hide_excluded_scanlators", false, ) diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt index bc9c08faf..17b8d41fc 100644 --- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt +++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt @@ -65,7 +65,7 @@ abstract class BaseUpdatesGridGlanceWidget( abstract val bottomPadding: Dp override suspend fun provideGlance(context: Context, id: GlanceId) { - val locked = preferences.useAuthenticator().get() + val locked = preferences.useAuthenticator.get() val containerModifier = GlanceModifier .fillMaxSize() .background(background) diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt index f54ab702c..0c52d6c84 100644 --- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt +++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/WidgetManager.kt @@ -22,7 +22,7 @@ class WidgetManager( fun Context.init(scope: LifecycleCoroutineScope) { combine( getUpdates.subscribe(read = false, after = BaseUpdatesGridGlanceWidget.DateLimit.toEpochMilli()), - securityPreferences.useAuthenticator().changes(), + securityPreferences.useAuthenticator.changes(), transform = { a, b -> a to b }, ) .distinctUntilChanged { old, new ->