// Created on savesnippets.com ยท https://savesnippets.com/I0gFcsXv78jAuW import androidx.compose.foundation.layout.* import androidx.compose.material3.* import androidx.compose.runtime.* import kotlinx.coroutines.delay @Composable fun UserScreen(userId: Int, repository: UserRepository) { var user by remember { mutableStateOf(null) } var error by remember { mutableStateOf(null) } // Re-runs whenever `userId` changes LaunchedEffect(userId) { try { user = repository.fetchUser(userId) } catch (e: Exception) { error = e.message } } when { error != null -> Text("Error: $error") user == null -> CircularProgressIndicator() else -> Text("Hello ${user!!.name}") } } interface UserRepository { suspend fun fetchUser(id: Int): User } data class User(val name: String)