Я столкнулся с проблемой сохранения данных "кэша" с помощью 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
}