From 92ac089b2bf79149da15eb031831562160995299 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Wed, 17 Aug 2022 21:16:08 +0300 Subject: [PATCH] Fixed crashes when removing draggable item --- .../sadellie/unitto/data/units/UnitGroupsRepository.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sadellie/unitto/data/units/UnitGroupsRepository.kt b/app/src/main/java/com/sadellie/unitto/data/units/UnitGroupsRepository.kt index 01d7f827..60636afa 100644 --- a/app/src/main/java/com/sadellie/unitto/data/units/UnitGroupsRepository.kt +++ b/app/src/main/java/com/sadellie/unitto/data/units/UnitGroupsRepository.kt @@ -96,9 +96,16 @@ class UnitGroupsRepository @Inject constructor() { suspend fun moveShownUnitGroups(from: ItemPosition, to: ItemPosition) { mutex.withLock { shownUnitGroups.value = shownUnitGroups.value.toMutableList().apply { + val initialIndex = shownUnitGroups.value.indexOfFirst { it == from.key } + /** + * No such item. Happens when dragging item and clicking "remove" while item is + * still being dragged. + */ + if (initialIndex == -1) return + add( shownUnitGroups.value.indexOfFirst { it == to.key }, - removeAt(shownUnitGroups.value.indexOfFirst { it == from.key }) + removeAt(initialIndex) ) } }