Пересмотр списка Dagger 2 - PullRequest
       7

Пересмотр списка Dagger 2

0 голосов
/ 24 декабря 2018

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