Replace preference getter functions with properties (#3091)

This commit is contained in:
AntsyLich
2026-03-20 14:57:01 +06:00
committed by GitHub
parent 2f9edb551f
commit 87665736a9
126 changed files with 816 additions and 722 deletions
@@ -29,13 +29,13 @@ class FilterChaptersForDownload(
suspend fun await(manga: Manga, newChapters: List<Chapter>): List<Chapter> {
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
@@ -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<Int> = preferenceStore.getInt("backup_interval", 12)
fun lastAutoBackupTimestamp() = preferenceStore.getLong(Preference.appStateKey("last_auto_backup_timestamp"), 0L)
val lastAutoBackupTimestamp: Preference<Long> = preferenceStore.getLong(
Preference.appStateKey("last_auto_backup_timestamp"),
0L,
)
}
@@ -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
}
@@ -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 ->
@@ -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)
}
}
@@ -8,6 +8,6 @@ class SetDisplayMode(
) {
fun await(display: LibraryDisplayMode) {
preferences.displayMode().set(display)
preferences.displayMode.set(display)
}
}
@@ -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)
}
}
@@ -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(),
)
}
}
@@ -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<Boolean> = preferenceStore.getBoolean(
"pref_download_only_over_wifi_key",
true,
)
fun saveChaptersAsCBZ() = preferenceStore.getBoolean("save_chapter_as_cbz", true)
val saveChaptersAsCBZ: Preference<Boolean> = preferenceStore.getBoolean("save_chapter_as_cbz", true)
fun splitTallImages() = preferenceStore.getBoolean("split_tall_images", true)
val splitTallImages: Preference<Boolean> = preferenceStore.getBoolean("split_tall_images", true)
fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0)
val autoDownloadWhileReading: Preference<Int> = preferenceStore.getInt("auto_download_while_reading", 0)
fun removeAfterReadSlots() = preferenceStore.getInt("remove_after_read_slots", -1)
val removeAfterReadSlots: Preference<Int> = preferenceStore.getInt("remove_after_read_slots", -1)
fun removeAfterMarkedAsRead() = preferenceStore.getBoolean(
val removeAfterMarkedAsRead: Preference<Boolean> = preferenceStore.getBoolean(
"pref_remove_after_marked_as_read_key",
false,
)
fun removeBookmarkedChapters() = preferenceStore.getBoolean("pref_remove_bookmarked", false)
val removeBookmarkedChapters: Preference<Boolean> = preferenceStore.getBoolean("pref_remove_bookmarked", false)
fun removeExcludeCategories() = preferenceStore.getStringSet(REMOVE_EXCLUDE_CATEGORIES_PREF_KEY, emptySet())
val removeExcludeCategories: Preference<Set<String>> = preferenceStore.getStringSet(
REMOVE_EXCLUDE_CATEGORIES_PREF_KEY,
emptySet(),
)
fun downloadNewChapters() = preferenceStore.getBoolean("download_new", false)
val downloadNewChapters: Preference<Boolean> = preferenceStore.getBoolean("download_new", false)
fun downloadNewChapterCategories() = preferenceStore.getStringSet(DOWNLOAD_NEW_CATEGORIES_PREF_KEY, emptySet())
val downloadNewChapterCategories: Preference<Set<String>> = preferenceStore.getStringSet(
DOWNLOAD_NEW_CATEGORIES_PREF_KEY,
emptySet(),
)
fun downloadNewChapterCategoriesExclude() =
preferenceStore.getStringSet(DOWNLOAD_NEW_CATEGORIES_EXCLUDE_PREF_KEY, emptySet())
val downloadNewChapterCategoriesExclude: Preference<Set<String>> = preferenceStore.getStringSet(
DOWNLOAD_NEW_CATEGORIES_EXCLUDE_PREF_KEY,
emptySet(),
)
fun downloadNewUnreadChaptersOnly() = preferenceStore.getBoolean("download_new_unread_chapters_only", false)
val downloadNewUnreadChaptersOnly: Preference<Boolean> = preferenceStore.getBoolean(
"download_new_unread_chapters_only",
false,
)
fun parallelSourceLimit() = preferenceStore.getInt("download_parallel_source_limit", 5)
val parallelSourceLimit: Preference<Int> = preferenceStore.getInt("download_parallel_source_limit", 5)
fun parallelPageLimit() = preferenceStore.getInt("download_parallel_page_limit", 5)
val parallelPageLimit: Preference<Int> = preferenceStore.getInt("download_parallel_page_limit", 5)
companion object {
private const val REMOVE_EXCLUDE_CATEGORIES_PREF_KEY = "remove_exclude_categories"
@@ -12,36 +12,39 @@ class LibraryPreferences(
private val preferenceStore: PreferenceStore,
) {
fun displayMode() = preferenceStore.getObjectFromString(
val displayMode: Preference<LibraryDisplayMode> = preferenceStore.getObjectFromString(
"pref_display_mode_library",
LibraryDisplayMode.default,
LibraryDisplayMode.Serializer::serialize,
LibraryDisplayMode.Serializer::deserialize,
)
fun sortingMode() = preferenceStore.getObjectFromString(
val sortingMode: Preference<LibrarySort> = 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<Int> = preferenceStore.getInt("library_random_sort_seed", 0)
fun portraitColumns() = preferenceStore.getInt("pref_library_columns_portrait_key", 0)
val portraitColumns: Preference<Int> = preferenceStore.getInt("pref_library_columns_portrait_key", 0)
fun landscapeColumns() = preferenceStore.getInt("pref_library_columns_landscape_key", 0)
val landscapeColumns: Preference<Int> = 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<Long> = preferenceStore.getLong(
Preference.appStateKey("library_update_last_timestamp"),
0L,
)
val autoUpdateInterval: Preference<Int> = preferenceStore.getInt("pref_library_update_interval_key", 0)
fun autoUpdateDeviceRestrictions() = preferenceStore.getStringSet(
val autoUpdateDeviceRestrictions: Preference<Set<String>> = preferenceStore.getStringSet(
"library_update_restriction",
setOf(
DEVICE_ONLY_ON_WIFI,
),
)
fun autoUpdateMangaRestrictions() = preferenceStore.getStringSet(
val autoUpdateMangaRestrictions: Preference<Set<String>> = 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<Boolean> = preferenceStore.getBoolean("auto_update_metadata", false)
fun showContinueReadingButton() = preferenceStore.getBoolean(
val showContinueReadingButton: Preference<Boolean> = preferenceStore.getBoolean(
"display_continue_reading_button",
false,
)
fun markDuplicateReadChapterAsRead() = preferenceStore.getStringSet("mark_duplicate_read_chapter_read", emptySet())
val markDuplicateReadChapterAsRead: Preference<Set<String>> = preferenceStore.getStringSet(
"mark_duplicate_read_chapter_read",
emptySet(),
)
// region Filter
fun filterDownloaded() = preferenceStore.getEnum(
val filterDownloaded: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_library_downloaded_v2",
TriState.DISABLED,
)
fun filterUnread() = preferenceStore.getEnum("pref_filter_library_unread_v2", TriState.DISABLED)
val filterUnread: Preference<TriState> = preferenceStore.getEnum("pref_filter_library_unread_v2", TriState.DISABLED)
fun filterStarted() = preferenceStore.getEnum(
val filterStarted: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_library_started_v2",
TriState.DISABLED,
)
fun filterBookmarked() = preferenceStore.getEnum(
val filterBookmarked: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_library_bookmarked_v2",
TriState.DISABLED,
)
fun filterCompleted() = preferenceStore.getEnum(
val filterCompleted: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_library_completed_v2",
TriState.DISABLED,
)
fun filterIntervalCustom() = preferenceStore.getEnum(
val filterIntervalCustom: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_library_interval_custom",
TriState.DISABLED,
)
fun filterTracking(id: Int) = preferenceStore.getEnum(
fun filterTracking(id: Int): Preference<TriState> = 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<Boolean> = preferenceStore.getBoolean("display_download_badge", false)
fun unreadBadge() = preferenceStore.getBoolean("display_unread_badge", true)
val unreadBadge: Preference<Boolean> = preferenceStore.getBoolean("display_unread_badge", true)
fun localBadge() = preferenceStore.getBoolean("display_local_badge", true)
val localBadge: Preference<Boolean> = preferenceStore.getBoolean("display_local_badge", true)
fun languageBadge() = preferenceStore.getBoolean("display_language_badge", false)
val languageBadge: Preference<Boolean> = 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<Boolean> = preferenceStore.getBoolean("library_show_updates_count", true)
val newUpdatesCount: Preference<Int> = preferenceStore.getInt(
Preference.appStateKey("library_unseen_updates_count"),
0,
)
// endregion
// region Category
fun defaultCategory() = preferenceStore.getInt(DEFAULT_CATEGORY_PREF_KEY, -1)
val defaultCategory: Preference<Int> = preferenceStore.getInt(DEFAULT_CATEGORY_PREF_KEY, -1)
fun lastUsedCategory() = preferenceStore.getInt(Preference.appStateKey("last_used_category"), 0)
val lastUsedCategory: Preference<Int> = preferenceStore.getInt(Preference.appStateKey("last_used_category"), 0)
fun categoryTabs() = preferenceStore.getBoolean("display_category_tabs", true)
val categoryTabs: Preference<Boolean> = preferenceStore.getBoolean("display_category_tabs", true)
fun categoryNumberOfItems() = preferenceStore.getBoolean("display_number_of_items", false)
val categoryNumberOfItems: Preference<Boolean> = preferenceStore.getBoolean("display_number_of_items", false)
fun categorizedDisplaySettings() = preferenceStore.getBoolean("categorized_display", false)
val categorizedDisplaySettings: Preference<Boolean> = preferenceStore.getBoolean("categorized_display", false)
fun updateCategories() = preferenceStore.getStringSet(LIBRARY_UPDATE_CATEGORIES_PREF_KEY, emptySet())
val updateCategories: Preference<Set<String>> = preferenceStore.getStringSet(
LIBRARY_UPDATE_CATEGORIES_PREF_KEY,
emptySet(),
)
fun updateCategoriesExclude() = preferenceStore.getStringSet(LIBRARY_UPDATE_CATEGORIES_EXCLUDE_PREF_KEY, emptySet())
val updateCategoriesExclude: Preference<Set<String>> = preferenceStore.getStringSet(
LIBRARY_UPDATE_CATEGORIES_EXCLUDE_PREF_KEY,
emptySet(),
)
// endregion
// region Chapter
fun filterChapterByRead() = preferenceStore.getLong(
val filterChapterByRead: Preference<Long> = preferenceStore.getLong(
"default_chapter_filter_by_read",
Manga.SHOW_ALL,
)
fun filterChapterByDownloaded() = preferenceStore.getLong(
val filterChapterByDownloaded: Preference<Long> = preferenceStore.getLong(
"default_chapter_filter_by_downloaded",
Manga.SHOW_ALL,
)
fun filterChapterByBookmarked() = preferenceStore.getLong(
val filterChapterByBookmarked: Preference<Long> = preferenceStore.getLong(
"default_chapter_filter_by_bookmarked",
Manga.SHOW_ALL,
)
// and upload date
fun sortChapterBySourceOrNumber() = preferenceStore.getLong(
val sortChapterBySourceOrNumber: Preference<Long> = preferenceStore.getLong(
"default_chapter_sort_by_source_or_number",
Manga.CHAPTER_SORTING_SOURCE,
)
fun displayChapterByNameOrNumber() = preferenceStore.getLong(
val displayChapterByNameOrNumber: Preference<Long> = preferenceStore.getLong(
"default_chapter_display_by_name_or_number",
Manga.CHAPTER_DISPLAY_NAME,
)
fun sortChapterByAscendingOrDescending() = preferenceStore.getLong(
val sortChapterByAscendingOrDescending: Preference<Long> = 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<Boolean> = preferenceStore.getBoolean("auto_clear_chapter_cache", false)
fun hideMissingChapters() = preferenceStore.getBoolean("pref_hide_missing_chapter_indicators", false)
val hideMissingChapters: Preference<Boolean> = preferenceStore.getBoolean(
"pref_hide_missing_chapter_indicators",
false,
)
// endregion
// region Swipe Actions
fun swipeToStartAction() = preferenceStore.getEnum(
val swipeToStartAction: Preference<ChapterSwipeAction> = preferenceStore.getEnum(
"pref_chapter_swipe_end_action",
ChapterSwipeAction.ToggleBookmark,
)
fun swipeToEndAction() = preferenceStore.getEnum(
val swipeToEndAction: Preference<ChapterSwipeAction> = preferenceStore.getEnum(
"pref_chapter_swipe_start_action",
ChapterSwipeAction.ToggleRead,
)
fun updateMangaTitles() = preferenceStore.getBoolean("pref_update_library_manga_titles", false)
val updateMangaTitles: Preference<Boolean> = preferenceStore.getBoolean("pref_update_library_manga_titles", false)
fun disallowNonAsciiFilenames() = preferenceStore.getBoolean("disallow_non_ascii_filenames", false)
val disallowNonAsciiFilenames: Preference<Boolean> = preferenceStore.getBoolean(
"disallow_non_ascii_filenames",
false,
)
// endregion
@@ -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<Unit> = Channel(Channel.UNLIMITED)
val changes = _changes.receiveAsFlow()
.shareIn(scope, SharingStarted.Lazily, 1)
init {
storagePreferences.baseStorageDirectory().changes()
storagePreferences.baseStorageDirectory.changes()
.drop(1)
.distinctUntilChanged()
.onEach { uri ->
@@ -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<String> = preferenceStore.getString(
Preference.appStateKey("storage_dir"),
folderProvider.path(),
)
}
@@ -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<TriState> = preferenceStore.getEnum(
"pref_filter_updates_downloaded",
TriState.DISABLED,
)
fun filterUnread() = preferenceStore.getEnum(
val filterUnread: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_updates_unread",
TriState.DISABLED,
)
fun filterStarted() = preferenceStore.getEnum(
val filterStarted: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_updates_started",
TriState.DISABLED,
)
fun filterBookmarked() = preferenceStore.getEnum(
val filterBookmarked: Preference<TriState> = preferenceStore.getEnum(
"pref_filter_updates_bookmarked",
TriState.DISABLED,
)
fun filterExcludedScanlators() = preferenceStore.getBoolean(
val filterExcludedScanlators: Preference<Boolean> = preferenceStore.getBoolean(
"pref_filter_updates_hide_excluded_scanlators",
false,
)