diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListController.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListController.kt index 2d20557a3..91c21af9b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListController.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListController.kt @@ -52,18 +52,18 @@ class HabitCardListController @Inject constructor( val habitFrom = adapter.getHabit(from) val habitTo = adapter.getHabit(to) - if (habitFrom != null && habitTo != null) { - adapter.performReorder(from, to) - behavior.onReorderHabit(habitFrom, habitTo) + if (habitFrom != null) { + if (habitTo != null) { + adapter.performReorder(from, to) + behavior.onReorderHabit(habitFrom, habitTo) + } return } - val hgrFrom = adapter.getHabitGroup(from) - val hgrTo = adapter.getHabitGroup(to) - if (hgrFrom != null && hgrTo != null) { - adapter.performReorder(from, to) - behavior.onReorderHabitGroup(hgrFrom, hgrTo) - } + val hgrFrom = adapter.getHabitGroup(from)!! + val hgrTo = adapter.getHabitGroup(to) ?: return + adapter.performReorder(from, to) + behavior.onReorderHabitGroup(hgrFrom, hgrTo) } override fun onItemClick(position: Int) { diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/AddToGroupCommand.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/AddToGroupCommand.kt index aaf014f5b..f232cf9f2 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/AddToGroupCommand.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/AddToGroupCommand.kt @@ -28,13 +28,15 @@ data class AddToGroupCommand( val selected: List ) : Command { override fun run() { - for (h in selected) { - val oldGroup = h.group - (oldGroup?.habitList ?: habitList).remove(h) - h.groupId = hgr.id - h.groupUUID = hgr.uuid - h.group = hgr - hgr.habitList.add(h) + for (habit in selected) { + val entries = habit.originalEntries.getKnown() + val oldGroup = habit.group + (oldGroup?.habitList ?: habitList).remove(habit) + habit.groupId = hgr.id + habit.groupUUID = hgr.uuid + habit.group = hgr + hgr.habitList.add(habit) + entries.forEach { habit.originalEntries.add(it) } } } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/RemoveFromGroupCommand.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/RemoveFromGroupCommand.kt index 80e5c6d1e..33eb6279d 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/RemoveFromGroupCommand.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/RemoveFromGroupCommand.kt @@ -28,11 +28,13 @@ data class RemoveFromGroupCommand( override fun run() { for (habit in selected) { val hgr = habit.group!! + val entries = habit.originalEntries.getKnown() hgr.habitList.remove(habit) habit.groupId = null habit.group = null habit.groupUUID = null habitList.add(habit) + entries.forEach { habit.originalEntries.add(it) } } } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt index e1d723e36..d5d168930 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt @@ -534,7 +534,7 @@ class HabitCardListCache @Inject constructor( if (!isValidInsert(habitGroup, toPosition)) return val fromIdx = positionIndices[fromPosition] val habitList = subHabits[fromIdx] - val toIdx = habitGroups.indexOf(positionToHabitGroup[toPosition]) - (if (fromPosition < toPosition) 1 else 0) + val toIdx = habitGroups.indexOf(positionToHabitGroup[toPosition]) habitGroups.removeAt(fromIdx) subHabits.removeAt(fromIdx)