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 {