Skip to content

Instantly share code, notes, and snippets.

@BenedictP
Created February 18, 2021 05:50
Show Gist options
  • Save BenedictP/c799e253fb33f52ec5a00a9b8509e546 to your computer and use it in GitHub Desktop.
Save BenedictP/c799e253fb33f52ec5a00a9b8509e546 to your computer and use it in GitHub Desktop.
sealed class RefreshableViewState<out Data : Serializable, out Error : Serializable> : Serializable {
object Init : RefreshableViewState<Nothing, Nothing>(), Serializable
class Loading<out Data : Serializable>(val data: Data?) : RefreshableViewState<Data, Nothing>(), Serializable
class Data<out Data : Serializable>(val data: Data) : RefreshableViewState<Data, Nothing>(), Serializable
class Error<out Error : Serializable, out Data : Serializable>(val error: Error, val data: Data?) :
RefreshableViewState<Data, Error>(),
Serializable
}
fun <Data : Serializable, Error : Serializable> RefreshableViewState<Data, Error>.getData(): Data? {
return when (this) {
RefreshableViewState.Init -> null
is RefreshableViewState.Loading -> this.data
is RefreshableViewState.Data -> this.data
is RefreshableViewState.Error -> this.data
}
}
sealed class ViewState<out Data : Serializable, out Error : Serializable> : Serializable {
object Init : ViewState<Nothing, Nothing>(), Serializable
object Loading : ViewState<Nothing, Nothing>(), Serializable
class Data<out Data : Serializable>(val data: Data) : ViewState<Data, Nothing>(), Serializable
class Error<out Error : Serializable>(val error: Error) : ViewState<Nothing, Error>(), Serializable
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment