GurpreetSK
08/01/2024, 6:16 AMGurpreetSK
08/01/2024, 6:17 AMinternal data object HomeScreen : Screen {
private val requests: Flow<GetRandomRant?> = MutableStateFlow(null)
@Composable
override fun Content() {
val navigator = LocalNavigator.currentOrThrow
val viewModel: HomeScreenViewModel = getScreenModel()
val state by viewModel.models.collectAsState()
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize()
) {
Text(state)
}
}
}
internal class HomeScreenViewModel(
private val repository: RantsRepository
) : ScreenModel {
val models: StateFlow<Rant> = repository
.getRandom()
.retry(3)
.catch { emit("") }
.stateIn(screenModelScope, SharingStarted.WhileSubscribed(5000), "")
}
GurpreetSK
08/01/2024, 6:18 AMinternal data object HomeScreen : Screen {
private val requests: Flow<GetRandomRant?> = MutableStateFlow(null)
@Composable
override fun Content() {
val navigator = LocalNavigator.currentOrThrow
val viewModel: HomeScreenViewModel = getScreenModel()
val state by viewModel.models().collectAsState()
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize()
) {
Text(state)
}
}
}
internal class HomeScreenViewModel(
private val repository: RantsRepository
) : ScreenModel {
fun models(): StateFlow<Rant> = repository
.getRandom()
.retry(3)
.catch { emit("") }
.stateIn(screenModelScope, SharingStarted.WhileSubscribed(5000), "")
}
GurpreetSK
08/01/2024, 6:19 AMRantsRepository#getRandom()
returns a random rant of type string.