diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 74e957f6c3..956063d3f3 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -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)) } -} \ No newline at end of file +} + +data class LogConfig( + // disables both [internal, http] + val picasso: Boolean = false, + val picassoInternal: Boolean = true, + val picassoHttp: Boolean = true, + + val storeAction: Boolean = false, + +) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/images/Picasso.kt b/app/src/main/java/com/tangem/tap/common/images/Picasso.kt index 9220859e8b..f5d02a19fe 100644 --- a/app/src/main/java/com/tangem/tap/common/images/Picasso.kt +++ b/app/src/main/java/com/tangem/tap/common/images/Picasso.kt @@ -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 + } } diff --git a/app/src/main/java/com/tangem/tap/common/redux/LogMiddleware.kt b/app/src/main/java/com/tangem/tap/common/redux/LogMiddleware.kt index 15ea778fed..5e5daf10c8 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/LogMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/LogMiddleware.kt @@ -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 = { dispatch, appState -> { nextDispatch -> { action -> - Timber.d("Dispatch action: $action") + if (logConfig.storeAction) Timber.d("Dispatch action: $action") nextDispatch(action) } } diff --git a/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt b/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt index 9e98fe16f5..19bbd08320 100644 --- a/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/home/HomeFragment.kt @@ -43,7 +43,7 @@ class HomeFragment : Fragment(R.layout.fragment_home), StoreSubscriber