Skip to content

Instantly share code, notes, and snippets.

@ryancfogarty
Last active September 16, 2025 17:30
Show Gist options
  • Select an option

  • Save ryancfogarty/030ac04956cf6a72c937c6985fd8c2c7 to your computer and use it in GitHub Desktop.

Select an option

Save ryancfogarty/030ac04956cf6a72c937c6985fd8c2c7 to your computer and use it in GitHub Desktop.
intent-ception
sealed class Intent {
data object IntentA : Intent
data object IntentB : Intent
}
init {
onIntent(IntentA)
}
override suspend fun ExecuteIntentScope<Action>.executeIntent(mviIntent: Intent) {
println("Start - $mviIntent")
when (mviIntent) {
IntentA -> {
onIntent(IntentB)
delay(500L)
}
IntentB -> doSomething(mviIntent)
}
println("End - $mviIntent")
}
private suspend fun doSomething(intent: Intent) {
println("doing something - $intent")
}
// output
// Start - IntentA
// End - IntentA
// Start - IntentB
// doing something - IntentB
// End - IntentB
sealed class Intent {
data object IntentA : Intent
data object IntentB : Intent
}
init {
onIntent(IntentA)
}
override suspend fun ExecuteIntentScope<Action>.executeIntent(mviIntent: Intent) {
viewModelScope.launch {
println("Start - $mviIntent")
when (mviIntent) {
IntentA -> {
onIntent(IntentB)
delay(500L)
}
IntentB -> doSomething(mviIntent)
}
println("End - $mviIntent")
}
}
private suspend fun doSomething(intent: Intent) {
println("doing something - $intent")
}
// output
// Start - IntentA
// ??
// ??
// ??
// ??
sealed class Intent {
data object IntentA : Intent
data object IntentB : Intent
}
init {
onIntent(IntentA)
}
override suspend fun ExecuteIntentScope<Action>.executeIntent(mviIntent: Intent) {
viewModelScope.launch {
println("Start - $mviIntent")
when (mviIntent) {
IntentA -> {
doSomething(mviIntent)
delay(500L)
}
IntentB -> doSomething(mviIntent)
}
println("End - $mviIntent")
}
}
private suspend fun doSomething(intent: Intent) {
println("doing something - $intent")
}
// output
// Start - IntentA
// doing something - IntentA
// End - IntentA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment