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

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

package me.aartikov.replica.paged

import me.aartikov.replica.common.LoadingReason

sealed interface PagedReplicaEvent> {

    sealed interface LoadingEvent> : PagedReplicaEvent {

        val reason: LoadingReason

        data class LoadingStarted(
            override val reason: LoadingReason
        ) : LoadingEvent

        sealed interface LoadingFinished> : LoadingEvent {
            data class Success>(
                override val reason: LoadingReason,
                val page: P
            ) : LoadingFinished

            data class Canceled(
                override val reason: LoadingReason,
            ) : LoadingFinished

            data class Error(
                override val reason: LoadingReason,
                val exception: Exception
            ) : LoadingFinished
        }
    }

    sealed interface FreshnessEvent : PagedReplicaEvent {
        data object Freshened : FreshnessEvent
        data object BecameStale : FreshnessEvent
    }

    data object ClearedEvent : PagedReplicaEvent

    data class ObserverCountChangedEvent(
        val count: Int,
        val activeCount: Int,
        val previousCount: Int,
        val previousActiveCount: Int
    ) : PagedReplicaEvent
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy