
me.aartikov.sesame.loading.paged.DataMerger.kt Maven / Gradle / Ivy
package me.aartikov.sesame.loading.paged
/**
* Allows to specify how stored data is merged with incoming page data
*/
interface DataMerger {
fun merge(storedData: List, incomingData: List): List
}
class SimpleDataMerger : DataMerger {
override fun merge(storedData: List, incomingData: List): List {
return storedData + incomingData
}
}
class DuplicateRemovingDataMerger(
private val keySelector: (T) -> Any
) : DataMerger {
override fun merge(storedData: List, incomingData: List): List {
val storedKeys = storedData.map(keySelector).toHashSet()
return storedData + incomingData.filter { keySelector(it) !in storedKeys }
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy