Skip to content

Commit cfa826b

Browse files
committed
Fix delete checked children from unchecked parent
1 parent 287e0c4 commit cfa826b

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

app/src/main/java/com/philkes/notallyx/presentation/view/note/listitem/ListItemCollectionExtensions.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,13 @@ fun SortedList<ListItem>.deleteCheckedItems() {
269269

270270
fun MutableList<ListItem>.deleteCheckedItems(): Set<Int> {
271271
return mapIndexed { index, listItem -> Pair(index, listItem) }
272-
.filter { it.second.checked }
273-
.sortedBy { it.second.isChild }
274-
.onEach { remove(it.second) }
275-
.map { it.first }
272+
.filter { (_, item) -> item.checked }
273+
.sortedBy { (_, item) -> item.isChild }
274+
.onEach { (_, item) ->
275+
removeFromParent(item)
276+
remove(item)
277+
}
278+
.map { (index, _) -> index }
276279
.toSet()
277280
}
278281

app/src/test/kotlin/com/philkes/notallyx/recyclerview/listmanager/ListManagerAddDeleteTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,21 @@ class ListManagerAddDeleteTest : ListManagerTestBase() {
152152
items.assertOrder("B", "E", "F")
153153
}
154154

155+
@Test
156+
fun `delete unchecked child from otherwise unchecked parent`() {
157+
setSorting(ListItemSort.NO_AUTO_SORT)
158+
listManager.changeIsChild(2, true)
159+
listManager.changeIsChild(3, true)
160+
listManager.changeChecked(2, true)
161+
162+
listManager.deleteCheckedItems()
163+
164+
items.assertOrder("A", "B", "D", "E", "F")
165+
"B".assertChildren("D")
166+
"B".assertIsNotChecked()
167+
"D".assertIsNotChecked()
168+
}
169+
155170
@Test
156171
fun `delete checked items with auto-sort enabled`() {
157172
setSorting(ListItemSort.AUTO_SORT_BY_CHECKED)

0 commit comments

Comments
 (0)