Я работаю над приложением, в котором мне нужно сделать два сетевых вызова. Это делается следующим образом:
private val call1 = MutableLiveData<Boolean>()
private val call2 = MutableLiveData<Boolean>()
private val overallSuccess = MediatorLiveData<Boolean>()
fun init {
overallSuccess.addSource(call1) { call1 ->
if (!call1) {
overallSuccess.value = call1
}
}
overallSuccess.addSource(call2) { call2 ->
if (!call2) {
overallSuccess.value = call2
}
}
}
fun doNetworkCalls() {
bookCollection = bookRepository.getBooks()
authorCollection = authorRepository.getAuthors()
call1.postValue(bookCollection.isNotEmpty)
call2.postValue(authorCollection.isNotEmpty)
}
Мои репозитории книг и авторов возвращают пустые списки, если при вызове произошла ошибка. То, что я пытаюсь сделать, это только вывести «ложь» на живые данные общегоSuccess, когда оба call1 и call2 возвращаются и один (или оба) ложны. Выводите true только один раз, когда call1 и call2 возвращаются как true. Как бы я поступил так? То, как я это настроил выше, вызывает ложь, когда один или оба возвращают ложь, но не верно, если они оба возвращаются. Как бы мне получить общий доступ к «changeValue» только при возврате обоих вызовов?