mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-17 15:32:01 +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(
|
||||
manifestUrl: String,
|
||||
type: String,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue