Я попытался использовать LiveData Transformations.map (), чтобы проверить результат и обновить пользовательский интерфейс. Но обратный вызов Transformations.map () не запускается без наблюдателя.
Так это хороший способ вызвать observeForever {}
для живых данных, возвращаемых Tranformations.map? И удалить оберверы на onCleared на ViewModel?
private lateinit var map: LiveData<Unit>
fun getAppConfiguration(): MutableLiveData<TopRatedMoviesResponse> {
progressDialogVisibleLiveData.postValue(true)
val appConfigurationLiveData = MutableLiveData<TopRatedMoviesResponse>()
val appConfigurationSourceLiveData : MutableLiveData<DataResult> = splashScreenRepository.getAppConfiguration(getApplication())
map = Transformations.map(appConfigurationSourceLiveData) { dataResult ->
progressDialogVisibleLiveData.postValue(false)
when (dataResult) {
is DataResultSuccess -> {
appConfigurationLiveData.postValue(dataResult.data as TopRatedMoviesResponse)
}
is DataResultFailed -> {
when (dataResult.errorCode) {
HTTPError.NO_INTERNET -> {
errorDialogVisibleLiveData.postValue(dataResult)
}
HTTPError.BAD_REQUEST -> {
errorDialogVisibleLiveData.postValue(dataResult)
}
HTTPError.UNAUTHORISED -> {
unAuthorisedEventLiveData.postValue(true)
}
HTTPError.FORBIDDEN, HTTPError.NOT_FOUND, HTTPError.INTERNAL_SERVER_ERROR, HTTPError.UNKNOWN -> {
errorDialogVisibleLiveData.postValue(dataResult)
}
}
}
}
}
map.observeForever { }
return appConfigurationLiveData
}
override fun onCleared() {
super.onCleared()
map.removeObserver { }
}