From 2585f9e0e862bfb7b4c953cc696b5a9f9944e6db Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 7 Jul 2023 16:31:20 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/build.gradle.kts | 1 + .../java/com/tangem/tap/TapApplication.kt | 11 +++++++--- .../java/com/tangem/tap/common/images/Coil.kt | 11 ++-------- .../walletconnect/WalletConnectManager.kt | 5 +++-- core/datasource/build.gradle.kts | 1 + .../tangem/datasource/api/common/Retrofit.kt | 20 ++++++++++--------- .../com/tangem/datasource/di/NetworkModule.kt | 4 +--- .../tangem/datasource/utils/HttpClientExt.kt | 11 ++++++---- gradle/dependencies.toml | 4 ++++ 9 files changed, 38 insertions(+), 30 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index efe2848d8c..14433e7634 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -139,6 +139,7 @@ dependencies { implementation(deps.kotlin.serialization) implementation(deps.walletConnectCore) implementation(deps.walletConnectWeb3) + implementation(deps.prettyLogger) /** Testing libraries */ testImplementation(deps.test.junit) diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 114746ccdb..086d90c904 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -5,6 +5,7 @@ import android.content.Context import android.content.pm.PackageManager import coil.ImageLoader import coil.ImageLoaderFactory +import com.orhanobut.logger.Logger import com.tangem.Log import com.tangem.LogFormat import com.tangem.blockchain.common.BlockchainSdkConfig @@ -14,6 +15,7 @@ import com.tangem.core.analytics.Analytics import com.tangem.core.featuretoggle.manager.FeatureTogglesManager import com.tangem.data.source.preferences.PreferencesDataSource import com.tangem.datasource.api.common.MoshiConverter +import com.tangem.datasource.api.common.createNetworkLoggingInterceptor import com.tangem.datasource.asset.AssetReader import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.config.FeaturesLocalLoader @@ -58,7 +60,6 @@ import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.wallet.BuildConfig import dagger.hilt.android.HiltAndroidApp import kotlinx.coroutines.runBlocking -import okhttp3.logging.HttpLoggingInterceptor import org.rekotlin.Store import timber.log.Timber import javax.inject.Inject @@ -168,7 +169,11 @@ class TapApplication : Application(), ImageLoaderFactory { ) if (BuildConfig.DEBUG) { - Timber.plant(Timber.DebugTree()) + Timber.plant(object : Timber.DebugTree() { + override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { + Logger.log(priority, tag, message, t) + } + }) } foregroundActivityObserver = ForegroundActivityObserver() @@ -187,7 +192,7 @@ class TapApplication : Application(), ImageLoaderFactory { if (LogConfig.network.blockchainSdkNetwork) { BlockchainSdkRetrofitBuilder.interceptors = listOf( - HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BODY }, + createNetworkLoggingInterceptor() ) } diff --git a/app/src/main/java/com/tangem/tap/common/images/Coil.kt b/app/src/main/java/com/tangem/tap/common/images/Coil.kt index b7305e86dc..0d6d4de675 100644 --- a/app/src/main/java/com/tangem/tap/common/images/Coil.kt +++ b/app/src/main/java/com/tangem/tap/common/images/Coil.kt @@ -4,8 +4,8 @@ import android.content.Context import android.util.Log import coil.ImageLoader import coil.util.Logger +import com.tangem.datasource.api.common.createNetworkLoggingInterceptor import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor import timber.log.Timber private const val COIL_LOG_TAG = "COIL" @@ -18,14 +18,7 @@ fun createCoilImageLoader(context: Context, logEnabled: Boolean = false): ImageL logger(CoilTimberLogger()) okHttpClient { OkHttpClient.Builder() - .addNetworkInterceptor( - HttpLoggingInterceptor { message -> - Timber.tag(COIL_LOG_TAG).d(message) - } - .apply { - level = HttpLoggingInterceptor.Level.BODY - }, - ) + .addNetworkInterceptor(createNetworkLoggingInterceptor()) .build() } } diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectManager.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectManager.kt index 7b80ce1039..99825e2721 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectManager.kt @@ -4,6 +4,7 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.common.card.EllipticCurve import com.tangem.common.extensions.guard import com.tangem.core.analytics.Analytics +import com.tangem.datasource.api.common.createNetworkLoggingInterceptor import com.tangem.domain.common.extensions.toNetworkId import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.common.analytics.events.WalletConnect @@ -36,7 +37,6 @@ import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response -import okhttp3.logging.HttpLoggingInterceptor import timber.log.Timber import java.util.* import java.util.concurrent.TimeUnit @@ -56,8 +56,9 @@ class WalletConnectManager { .addInterceptor(RetryInterceptor()) .build() } + private val interceptor by lazy { - HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BODY } + createNetworkLoggingInterceptor() } private var sessions: MutableMap = mutableMapOf() diff --git a/core/datasource/build.gradle.kts b/core/datasource/build.gradle.kts index de4006b63a..114edb01aa 100644 --- a/core/datasource/build.gradle.kts +++ b/core/datasource/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { implementation(deps.retrofit) implementation(deps.retrofit.moshi) implementation(deps.reactive.network) + implementation(deps.prettyOkHttpLoggingInterceptor) /** Time */ implementation(deps.jodatime) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/Retrofit.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/Retrofit.kt index 166036783c..72aea8deb2 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/Retrofit.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/Retrofit.kt @@ -1,8 +1,10 @@ package com.tangem.datasource.api.common +import android.util.Log +import com.ihsanbal.logging.Level +import com.ihsanbal.logging.LoggingInterceptor import okhttp3.Interceptor import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import java.util.concurrent.TimeUnit @@ -22,15 +24,15 @@ fun createRetrofitInstance( } interceptors.forEach { okHttpBuilder.addInterceptor(it) } - if (logEnabled) okHttpBuilder.addInterceptor(createHttpLoggingInterceptor()) + if (logEnabled) okHttpBuilder.addInterceptor(createNetworkLoggingInterceptor()) - return Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(MoshiConverter.networkMoshiConverter) - .client(okHttpBuilder.build()) - .build() + return Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(MoshiConverter.networkMoshiConverter) + .client(okHttpBuilder.build()).build() } -private fun createHttpLoggingInterceptor(): HttpLoggingInterceptor = HttpLoggingInterceptor().apply { - level = HttpLoggingInterceptor.Level.BODY +fun createNetworkLoggingInterceptor(): Interceptor { + return LoggingInterceptor.Builder() + .setLevel(Level.BODY) + .log(Log.VERBOSE) + .build() } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt index c8ae82faa9..9c11afc771 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/NetworkModule.kt @@ -63,9 +63,7 @@ class NetworkModule { @PromotionOneInch fun providePromotionOneInchApi(authProvider: AuthProvider, @NetworkMoshi moshi: Moshi): PromotionApi { val okClient = OkHttpClient.Builder() - .addHeaders( - AuthenticationHeader(authProvider), - ) + .addHeaders(AuthenticationHeader(authProvider)) .allowLogging() .callTimeout(API_ONE_INCH_TIMEOUT_MS, TimeUnit.MILLISECONDS) .connectTimeout(API_ONE_INCH_TIMEOUT_MS, TimeUnit.MILLISECONDS) diff --git a/core/datasource/src/main/java/com/tangem/datasource/utils/HttpClientExt.kt b/core/datasource/src/main/java/com/tangem/datasource/utils/HttpClientExt.kt index 4fd16a0d1d..384676621a 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/utils/HttpClientExt.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/utils/HttpClientExt.kt @@ -1,10 +1,9 @@ package com.tangem.datasource.utils import com.tangem.datasource.BuildConfig +import com.tangem.datasource.api.common.createNetworkLoggingInterceptor import okhttp3.Interceptor import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor -import okhttp3.logging.HttpLoggingInterceptor.Level /** Extension for adding headers [requestHeaders] to every [OkHttpClient] request */ internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeader): OkHttpClient.Builder { @@ -26,5 +25,9 @@ internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeade * * @param level logging level. By default, only the request body. */ -internal fun OkHttpClient.Builder.allowLogging(level: Level = Level.BODY): OkHttpClient.Builder = - if (BuildConfig.DEBUG) addInterceptor(interceptor = HttpLoggingInterceptor().setLevel(level)) else this \ No newline at end of file +internal fun OkHttpClient.Builder.allowLogging(): OkHttpClient.Builder = + if (BuildConfig.DEBUG) { + addInterceptor(interceptor = createNetworkLoggingInterceptor()) + } else { + this + } \ No newline at end of file diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 5fb4bbfb94..9b66d181ca 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -75,6 +75,8 @@ arrow = "1.2.0-RC" reactiveNetwork = "3.0.8" walletConnectCore = "1.15.0" walletConnectWeb3 = "1.8.0" +prettyLogger = "2.2.0" +prettyOkHttpLoggingInterceptor = "3.1.0" # endregion Other libraries # region Tangem @@ -222,4 +224,6 @@ arrow-fx = { module = "io.arrow-kt:arrow-fx-coroutines", version.ref = "arrow" } reactive-network = { module = "com.github.pwittchen:reactivenetwork-rx2", version.ref = "reactiveNetwork" } walletConnectCore = { module = "com.walletconnect:android-core", version.ref = "walletConnectCore" } walletConnectWeb3 = { module = "com.walletconnect:web3wallet", version.ref = "walletConnectWeb3" } +prettyLogger = { module = "com.orhanobut:logger", version.ref = "prettyLogger" } +prettyOkHttpLoggingInterceptor = { module = "com.github.ihsanbal:LoggingInterceptor", version.ref = "prettyOkHttpLoggingInterceptor" } # endregion Other