Browse Source

Use actual indexes instead of existing order number when reordering categories

Fixes #8738
arkon 2 năm trước cách đây
mục cha
commit
5f4825465e

+ 14 - 14
app/src/main/java/eu/kanade/domain/category/interactor/ReorderCategory.kt

@@ -28,26 +28,26 @@ class ReorderCategory(
                 .filterNot(Category::isSystemCategory)
                 .toMutableList()
 
-            val newPosition = when (moveTo) {
-                MoveTo.UP -> category.order - 1
-                MoveTo.DOWN -> category.order + 1
-            }.toInt()
-
             val currentIndex = categories.indexOfFirst { it.id == category.id }
-            if (currentIndex == newPosition) {
+            if (currentIndex == -1) {
                 return@withNonCancellableContext Result.Unchanged
             }
 
-            Collections.swap(categories, currentIndex, newPosition)
-
-            val updates = categories.mapIndexed { index, category ->
-                CategoryUpdate(
-                    id = category.id,
-                    order = index.toLong(),
-                )
-            }
+            val newPosition = when (moveTo) {
+                MoveTo.UP -> currentIndex - 1
+                MoveTo.DOWN -> currentIndex + 1
+            }.toInt()
 
             try {
+                Collections.swap(categories, currentIndex, newPosition)
+
+                val updates = categories.mapIndexed { index, category ->
+                    CategoryUpdate(
+                        id = category.id,
+                        order = index.toLong(),
+                    )
+                }
+
                 categoryRepository.updatePartial(updates)
                 Result.Success
             } catch (e: Exception) {