class ElephantsViewModel (
private val elephantsApi: MainViewModel
) : ViewModel() {
private val elephants = MutableLiveData<Resource<List<Elephant>>>()
init {
fetchElephants()
}
private fun fetchElephants() {
viewModelScope.launch {
elephants.postValue(Resource.Loading(null))
elephantsApi.getAnElephant().zip(elephantsApi.getMoreElephants()) { elephantsFromApi, moreElephantsFromApi ->
val allElephantsFromApi = mutableListOf<Elephant>()
allElephantsFromApi.addAll(elephantsFromApi)
allElephantsFromApi.addAll(moreElephantsFromApi)
return@zip allElephantsFromApi
}
.flowOn(Dispatchers.Default)
.catch(e: Exception) {
Log.d(TAG, "fetchElephants: $e.message")
}
.collect {
elephants.value?.data
}
}
}
}