From 119bcbf8ed2415664922ea77fadf0da1165d1732 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sat, 8 Jun 2024 06:38:35 +0600 Subject: [PATCH] Check category order before restoring from backup Closes #632 Co-authored-by: Cologler <10906962+Cologler@users.noreply.github.com> --- .../restore/restorers/CategoriesRestorer.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 f98af1045..23a2d47fa 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 @@ -17,14 +17,20 @@ class CategoriesRestorer( if (backupCategories.isNotEmpty()) { val dbCategories = getCategories.await() val dbCategoriesByName = dbCategories.associateBy { it.name } + var nextOrder = dbCategories.maxOfOrNull { it.order }?.plus(1) ?: 0 - val categories = backupCategories.map { - dbCategoriesByName[it.name] - ?: handler.awaitOneExecutable { - categoriesQueries.insert(it.name, it.order, it.flags) + val categories = backupCategories + .sortedBy { it.order } + .map { + val dbCategory = dbCategoriesByName[it.name] + if (dbCategory != null) return@map dbCategory + val order = nextOrder++ + handler.awaitOneExecutable { + categoriesQueries.insert(it.name, order, it.flags) categoriesQueries.selectLastInsertedRowId() - }.let { id -> it.toCategory(id) } - } + } + .let { id -> it.toCategory(id).copy(order = order) } + } libraryPreferences.categorizedDisplaySettings().set( (dbCategories + categories)