feat: add dedup function for catalog items

This commit is contained in:
tapframe 2026-04-16 12:23:28 +05:30
parent db4d79ff9d
commit db7baf11e3
2 changed files with 14 additions and 1 deletions

View file

@ -102,6 +102,18 @@ fun mergeCatalogItems(
} }
} }
fun dedupeCatalogItems(items: List<MetaPreview>): List<MetaPreview> {
if (items.size < 2) return items
val seen = mutableSetOf<String>()
return buildList(items.size) {
items.forEach { item ->
if (seen.add(item.stableKey())) {
add(item)
}
}
}
}
internal fun buildCatalogUrl( internal fun buildCatalogUrl(
manifestUrl: String, manifestUrl: String,
type: String, type: String,

View file

@ -75,6 +75,7 @@ object CatalogRepository {
?.items ?.items
.orEmpty() .orEmpty()
.map { it.toMetaPreview() } .map { it.toMetaPreview() }
.let(::dedupeCatalogItems)
}.fold( }.fold(
onSuccess = { items -> onSuccess = { items ->
if (activeRequest != request) return@fold if (activeRequest != request) return@fold
@ -127,7 +128,7 @@ object CatalogRepository {
if (activeRequest != request) return@fold if (activeRequest != request) return@fold
val mergedItems = if (reset) { val mergedItems = if (reset) {
page.items dedupeCatalogItems(page.items)
} else { } else {
mergeCatalogItems(_uiState.value.items, page.items) mergeCatalogItems(_uiState.value.items, page.items)
} }