Пересмотр списка Dagger 2
Я столкнулся с проблемой сохранения данных "кеша" с помощью Dagger2.
я имею Application Component
а также Authentication Subcomponent
, Authentication Subcomponent
имеет кеш-модуль:
@Module
class AuthCacheModule {
@AuthScope
@Provides
fun provideGeoLocation(): GeoInfo = GeoInfo()
@AuthScope
@Provides
fun provideLastKnownLocation(): GeoLocation = GeoLocation()
@AuthScope
@Provides
fun provideCountries(): List<Country> = mutableListOf()
}
Первые два объекта кеша работают нормально. Проблема со списком стран. Каждый раз, когда я вызываю метод для извлечения из сети или из кеша List<Country>
из кеша всегда пусто.
override fun getCountryList(): Observable<List<Country>> =
Observable.just(countries)
.flatMap {
when(it.isEmpty()) {
true -> Rx2Apollo.from(apolloClient.query(GetCountryListQuery()))
.map { countryMapper.transformToDomain(it.data()?.countryList()) }
.map { saveCountries(it) }
false -> Observable.just(countries)
}
}
private fun saveCountries(items: List<Country>): List<Country> {
if (countries.isNotEmpty()) {
(countries as MutableList).clear()
}
(countries as MutableList).addAll(items)
return countries
}