mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-16 23:12:12 +00:00
feat: add dedup function for catalog items
This commit is contained in:
parent
db4d79ff9d
commit
db7baf11e3
2 changed files with 14 additions and 1 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue