Fix App's preferences referencing deleted categories (#1734)

This commit is contained in:
Cuong-Tran
2025-02-25 01:44:28 +07:00
committed by GitHub
parent 7e71a34256
commit eeb683069a
6 changed files with 67 additions and 2 deletions

View File

@@ -5,9 +5,13 @@ import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.CategoryUpdate
import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.download.service.DownloadPreferences
import tachiyomi.domain.library.service.LibraryPreferences
class DeleteCategory(
private val categoryRepository: CategoryRepository,
private val libraryPreferences: LibraryPreferences,
private val downloadPreferences: DownloadPreferences,
) {
suspend fun await(categoryId: Long) = withNonCancellableContext {
@@ -26,6 +30,25 @@ class DeleteCategory(
)
}
val defaultCategory = libraryPreferences.defaultCategory().get()
if (defaultCategory == categoryId.toInt()) {
libraryPreferences.defaultCategory().delete()
}
val categoryPreferences = listOf(
libraryPreferences.updateCategories(),
libraryPreferences.updateCategoriesExclude(),
downloadPreferences.removeExcludeCategories(),
downloadPreferences.downloadNewChapterCategories(),
downloadPreferences.downloadNewChapterCategoriesExclude(),
)
val categoryIdString = categoryId.toString()
categoryPreferences.forEach { preference ->
val ids = preference.get()
if (categoryIdString !in ids) return@forEach
preference.set(ids.minus(categoryIdString))
}
try {
categoryRepository.updatePartial(updates)
Result.Success