All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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