
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