From db7baf11e3c2af638bc7c0a00894fc4f1e5f7cac Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:23:28 +0530 Subject: [PATCH] feat: add dedup function for catalog items --- .../com/nuvio/app/features/catalog/CatalogData.kt | 12 ++++++++++++ .../nuvio/app/features/catalog/CatalogRepository.kt | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogData.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogData.kt index f80fc23e..d0cdd365 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogData.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogData.kt @@ -102,6 +102,18 @@ fun mergeCatalogItems( } } +fun dedupeCatalogItems(items: List): List { + if (items.size < 2) return items + val seen = mutableSetOf() + return buildList(items.size) { + items.forEach { item -> + if (seen.add(item.stableKey())) { + add(item) + } + } + } +} + internal fun buildCatalogUrl( manifestUrl: String, type: String, diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogRepository.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogRepository.kt index 400cffd5..d1df68d4 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogRepository.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/catalog/CatalogRepository.kt @@ -75,6 +75,7 @@ object CatalogRepository { ?.items .orEmpty() .map { it.toMetaPreview() } + .let(::dedupeCatalogItems) }.fold( onSuccess = { items -> if (activeRequest != request) return@fold @@ -127,7 +128,7 @@ object CatalogRepository { if (activeRequest != request) return@fold val mergedItems = if (reset) { - page.items + dedupeCatalogItems(page.items) } else { mergeCatalogItems(_uiState.value.items, page.items) }