From 762639cab59e40076cfd1472db1f9bc660c78fbb Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Sat, 14 Nov 2026 04:55:37 +0000 Subject: [PATCH] queue: invalidate keyset cursors on edits --- .../com/subtracks/data/repo/QueueRepository.kt | 2 ++ .../com/subtracks/data/repo/QueueRepositoryTest.kt | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/app/src/main/kotlin/com/subtracks/data/repo/QueueRepository.kt b/app/src/main/kotlin/com/subtracks/data/repo/QueueRepository.kt index 24fa9a0f..f7ca47c8 100644 --- a/app/src/main/kotlin/com/subtracks/data/repo/QueueRepository.kt +++ b/app/src/main/kotlin/com/subtracks/data/repo/QueueRepository.kt @@ -1094,6 +1094,7 @@ class QueueRepository( dao.insert(entries.mapIndexed { index, entry -> entry.copy(id = 0, position = index.toLong()) }) } } + keyCache.clear() queueVersion.incrementAndGet() } @@ -1106,6 +1107,7 @@ class QueueRepository( ) } } + keyCache.clear() queueVersion.incrementAndGet() } diff --git a/app/src/test/kotlin/com/subtracks/data/repo/QueueRepositoryTest.kt b/app/src/test/kotlin/com/subtracks/data/repo/QueueRepositoryTest.kt index 3004c2da..d16a16ad 100644 --- a/app/src/test/kotlin/com/subtracks/data/repo/QueueRepositoryTest.kt +++ b/app/src/test/kotlin/com/subtracks/data/repo/QueueRepositoryTest.kt @@ -458,6 +458,18 @@ class QueueRepositoryTest { assertEquals(3L, repository.remapPosition(updated, point.current!!)) } + @Test + fun aRemovalDoesNotReusePreEditKeysetRows() = + runTest { + seedLibrary() + val snapshot = repository.snapshotAfter(listOf(repository.albumEntry(1, "al1"))) + assertEquals("s1", repository.itemAt(snapshot, 0)?.song?.id) + + repository.removeAt(snapshot, 0) + + assertEquals(listOf("s2", "s3"), resolveAll(repository.snapshot())) + } + @Test fun anUnrelatedOriginResetRemapsWithinTheSecondUnchangedFragment() = runTest {