From 3d087f442849cac1df48f2e3c64b8f18dd58984c Mon Sep 17 00:00:00 2001 From: Jack Hamilton Date: Fri, 11 Oct 2024 02:37:11 -0500 Subject: [PATCH] Keyed random seed --- .../java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt | 4 +++- .../domain/category/interactor/SetSortModeForCategory.kt | 4 ++++ .../tachiyomi/domain/library/service/LibraryPreferences.kt | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) 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 96a73b9c1..7f11b5add 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 @@ -72,6 +72,8 @@ import tachiyomi.domain.track.model.Track import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Collections +import kotlin.random.Random /** * Typealias for the library manga, using the category as keys, and list of manga as values. @@ -305,7 +307,7 @@ class LibraryScreenModel( return mapValues { (key, value) -> when (key.sort.type) { - LibrarySort.Type.Random -> value.shuffled() + LibrarySort.Type.Random -> value.shuffled(Random(libraryPreferences.currentRandomSortSeed().get())) else -> { val comparator = key.sort.comparator() .let { if (key.sort.isAscending) it else it.reversed() } 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 e514e0898..8eb451878 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt @@ -6,6 +6,7 @@ import tachiyomi.domain.category.repository.CategoryRepository import tachiyomi.domain.library.model.LibrarySort import tachiyomi.domain.library.model.plus import tachiyomi.domain.library.service.LibraryPreferences +import kotlin.random.Random class SetSortModeForCategory( private val preferences: LibraryPreferences, @@ -15,6 +16,9 @@ class SetSortModeForCategory( suspend fun await(categoryId: Long?, type: LibrarySort.Type, direction: LibrarySort.Direction) { val category = categoryId?.let { categoryRepository.get(it) } val flags = (category?.flags ?: 0) + type + direction + if (type == LibrarySort.Type.Random) { + preferences.currentRandomSortSeed().set(Random.nextInt()) + } if (category != null && preferences.categorizedDisplaySettings().get()) { categoryRepository.updatePartial( CategoryUpdate( 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 437dc54bc..249f186d5 100644 --- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt @@ -26,6 +26,8 @@ class LibraryPreferences( LibrarySort.Serializer::deserialize, ) + fun currentRandomSortSeed() = preferenceStore.getInt("library_random_sort_seed", 0) + fun portraitColumns() = preferenceStore.getInt("pref_library_columns_portrait_key", 0) fun landscapeColumns() = preferenceStore.getInt("pref_library_columns_landscape_key", 0)