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
}
}
}