package com.tangem.tap import android.app.Application import com.google.firebase.ktx.Firebase import com.google.firebase.remoteconfig.ktx.remoteConfig import com.google.firebase.remoteconfig.ktx.remoteConfigSettings import com.tangem.tap.common.images.PicassoHelper import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.appReducer import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.config.ConfigManager import com.tangem.tap.domain.config.ConfigNameResolver import com.tangem.tap.domain.config.LocalLoader import com.tangem.tap.domain.config.RemoteLoader import com.tangem.tap.network.NetworkConnectivity import com.tangem.tap.network.createMoshi import com.tangem.tap.persistence.PreferencesStorage import com.tangem.wallet.BuildConfig import org.rekotlin.Store import timber.log.Timber val store = Store( reducer = ::appReducer, middleware = AppState.getMiddleware(), state = AppState() ) lateinit var preferencesStorage: PreferencesStorage class TapApplication : Application() { override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) Firebase.remoteConfig.setConfigSettingsAsync(remoteConfigSettings { this.minimumFetchIntervalInSeconds = 60 }) } else { Firebase.remoteConfig.setConfigSettingsAsync(remoteConfigSettings { this.minimumFetchIntervalInSeconds = 3600 }) } NetworkConnectivity.createInstance(store, this) preferencesStorage = PreferencesStorage(this) PicassoHelper.initPicassoWithCaching(this) loadConfigs() } private fun loadConfigs() { val moshi = createMoshi() val nameResolver = ConfigNameResolver.get() val localLoader = LocalLoader(this, nameResolver, moshi) val remoteLoader = RemoteLoader(nameResolver, moshi) val configManager = ConfigManager(localLoader, remoteLoader) configManager.load { store.dispatch(GlobalAction.SetConfigManager(configManager)) } } }