Updated on 2026-08-14

This commit is contained in:
Tangem 2022-03-25 20:05:36 +03:00
parent d10ca65bba
commit d620010137
4 changed files with 37 additions and 18 deletions

View file

@ -35,6 +35,8 @@ val store = Store(
middleware = AppState.getMiddleware(),
state = AppState()
)
val logConfig = LogConfig()
lateinit var preferencesStorage: PreferencesStorage
lateinit var currenciesRepository: CurrenciesRepository
lateinit var walletConnectRepository: WalletConnectRepository
@ -99,4 +101,14 @@ class TapApplication : Application() {
val analyticsHandler = GlobalAnalyticsHandler.createDefaultAnalyticHandlers(this)
store.dispatch(GlobalAction.SetAnanlyticHandlers(analyticsHandler))
}
}
}
data class LogConfig(
// disables both [internal, http]
val picasso: Boolean = false,
val picassoInternal: Boolean = true,
val picassoHttp: Boolean = true,
val storeAction: Boolean = false,
)

View file

@ -3,6 +3,7 @@ package com.tangem.tap.common.images
import android.app.Application
import com.squareup.picasso.OkHttp3Downloader
import com.squareup.picasso.Picasso
import com.tangem.tap.logConfig
import com.tangem.wallet.BuildConfig
import okhttp3.Cache
import okhttp3.CacheControl
@ -18,35 +19,38 @@ class PicassoHelper {
fun initPicassoWithCaching(application: Application) {
val picasso = Picasso.Builder(application)
.downloader(OkHttp3Downloader(getOkHttpForPicasso(application)))
.build()
picasso.isLoggingEnabled = BuildConfig.DEBUG
.downloader(OkHttp3Downloader(getOkHttpForPicasso(application)))
.build()
picasso.isLoggingEnabled = logIsEnabled()
picasso.setIndicatorsEnabled(BuildConfig.DEBUG)
Picasso.setSingletonInstance(picasso)
}
private fun getOkHttpForPicasso(application: Application): OkHttpClient {
val okHttpBuilder = OkHttpClient.Builder()
okHttpBuilder.cache(Cache(File(application.filesDir, "artworks"), Long.MAX_VALUE))
okHttpBuilder.callTimeout(15000, TimeUnit.MILLISECONDS)
return OkHttpClient.Builder().apply {
cache(Cache(File(application.filesDir, "artworks"), Long.MAX_VALUE))
callTimeout(15000, TimeUnit.MILLISECONDS)
okHttpBuilder.addInterceptor { chain ->
val cacheControl = CacheControl.Builder()
if (logIsEnabled()) {
addDebugInterceptors(this)
}
addInterceptor { chain ->
val cacheControl = CacheControl.Builder()
.maxStale(KEEP_CACHE_MAX_DAYS, TimeUnit.DAYS)
.build()
val origRequest = chain.request()
val neverExpireRequest = origRequest.newBuilder()
val origRequest = chain.request()
val neverExpireRequest = origRequest.newBuilder()
.cacheControl(cacheControl)
.build()
chain.proceed(neverExpireRequest)
}
addDebugInterceptors(okHttpBuilder)
chain.proceed(neverExpireRequest)
}
}.build()
return okHttpBuilder.build()
}
private fun addDebugInterceptors(okHttpBuilder: OkHttpClient.Builder) {
if (!BuildConfig.DEBUG) return
if (!BuildConfig.DEBUG || !logConfig.picasso) return
val picassoInterceptor = HttpLoggingInterceptor(PicassoOkHttpLogger()).apply {
level = HttpLoggingInterceptor.Level.BODY
@ -54,6 +58,8 @@ class PicassoHelper {
okHttpBuilder.addInterceptor(picassoInterceptor)
}
private fun logIsEnabled(): Boolean = BuildConfig.DEBUG && logConfig.picasso
}
}

View file

@ -1,5 +1,6 @@
package com.tangem.tap.common.redux
import com.tangem.tap.logConfig
import org.rekotlin.Middleware
import timber.log.Timber
@ -9,7 +10,7 @@ import timber.log.Timber
val logMiddleware: Middleware<AppState> = { dispatch, appState ->
{ nextDispatch ->
{ action ->
Timber.d("Dispatch action: $action")
if (logConfig.storeAction) Timber.d("Dispatch action: $action")
nextDispatch(action)
}
}

View file

@ -43,7 +43,7 @@ class HomeFragment : Fragment(R.layout.fragment_home), StoreSubscriber<HomeState
private fun getRegionProvider(): RegionProvider = RegionService(
listOf(
TelephonyManagerRegionProvider(requireContext()),
// TelephonyManagerRegionProvider(requireContext()),
LocaleRegionProvider()
)
)