Skip to content

Instantly share code, notes, and snippets.

@fluxtah
Created March 2, 2020 10:54
Show Gist options
  • Save fluxtah/3aa9c229993691400f99687ae9c32e09 to your computer and use it in GitHub Desktop.
Save fluxtah/3aa9c229993691400f99687ae9c32e09 to your computer and use it in GitHub Desktop.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val hello = remember { HelloModel(HelloResult.Pending) }
Recompose { recompose ->
observe(getHello()) {
onResult {
if (hello.state != result) {
hello.state = result
}
}
}
hello.state.let { state ->
when (state) {
is HelloResult.Pending -> Text("Loading...")
is HelloResult.Hello -> Text("Hello")
is HelloResult.Error -> {
Column {
Text("Error")
Button(onClick = {
doError = false
recompose()
}) {
Text("Retry")
}
}
}
}
}
}
}
}
var doError = true
fun getHello(): LiveData<HelloResult> {
if (doError) {
return MutableLiveData(HelloResult.Error)
} else {
return MutableLiveData(HelloResult.Hello)
}
}
sealed class HelloResult {
object Pending : HelloResult()
object Hello : HelloResult()
object Error : HelloResult()
}
@Model
data class HelloModel(
var state: HelloResult = HelloResult.Pending
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment