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

commonMain.me.aartikov.replica.single.ReplicaState.kt Maven / Gradle / Ivy

package me.aartikov.replica.single

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

/**
 * State of [PhysicalReplica].
 */
data class ReplicaState(
    val loading: Boolean,
    val data: ReplicaData?,
    val error: LoadingError?,
    val observingState: ObservingState,
    val dataRequested: Boolean,
    val preloading: Boolean,
    val loadingFromStorageRequired: Boolean
) {

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

    companion object {
        fun  createEmpty(hasStorage: Boolean): ReplicaState = ReplicaState(
            loading = false,
            data = null,
            error = null,
            observingState = ObservingState(),
            dataRequested = false,
            preloading = false,
            loadingFromStorageRequired = hasStorage
        )
    }
}

internal fun  ReplicaState.toLoadable() = Loadable(
    loading = loading,
    data = data?.valueWithOptimisticUpdates,
    error = error?.let { CombinedLoadingError(listOf(it)) }
)




© 2015 - 2025 Weber Informatics LLC | Privacy Policy