class UserViewModel (private val repository: UserRepository) : ViewModel() { val users: LiveData<List<User>> = repository.users.asLiveData() fun refreshUsers() { val users: LiveData<List<User>> = repository.asLiveData() fun refreshUsers() { viewModelScope.launch { repository.fetchUsersFromApi() } } } }
class UserRepository( private val apiService: ApiService, private val userDao: UserDao ) { val users: Flow<List<User>> = userDao.getAllUsers() suspend fun fetchUsersFromApi() { try { val usersFromApi = apiService.getUsers() userDao.insertUsers(usersFromApi) } catch(e: Exception) { // error handling } } }
class UserRepository( private val apiService: ApiService, private val userDao: UserDao ) { val users: Flow<List<User>> = userDao.getAllUsers() suspend fun fetchUsersFromApi() { try { val usersFromApi = apiService.getUsers() userDao.insertUsers(usersFromApi) } catch(e: Exception) { // error handling } } }