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(
manifestUrl: String,
type: String,

View file

@ -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)
}