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

commonMain.me.aartikov.replica.paged.PagedReplicaState.kt Maven / Gradle / Ivy

package me.aartikov.replica.paged

import me.aartikov.replica.common.CombinedLoadingError
import me.aartikov.replica.common.LoadingError
import me.aartikov.replica.common.ObservingState

data class PagedReplicaState>(
    val loadingStatus: PagedLoadingStatus,
    val data: PagedReplicaData?,
    val error: LoadingError?,
    val observingState: ObservingState,
    val preloading: Boolean
) {

    val hasFreshData get() = data?.fresh == true

    companion object {
        fun > createEmpty() = PagedReplicaState(
            loadingStatus = PagedLoadingStatus.None,
            data = null,
            error = null,
            observingState = ObservingState(),
            preloading = false
        )
    }
}

internal fun > PagedReplicaState.toPaged() = Paged(
    loadingStatus = loadingStatus,
    data = data?.valueWithOptimisticUpdates,
    error = error?.let { CombinedLoadingError(listOf(it)) }
)