From 2585f9e0e862bfb7b4c953cc696b5a9f9944e6db Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 7 Jul 2023 16:31:20 +0300 Subject: [PATCH 1/5] 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 From eafd243752d2b92a105855378b55f87b09e6d9c2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 7 Jul 2023 19:01:21 +0300 Subject: [PATCH 2/5] Updated on 2026-08-14 --- core/datasource/build.gradle.kts | 3 +-- .../main/java/com/tangem/datasource/api/common/Retrofit.kt | 7 +++++-- .../main/java/com/tangem/datasource/utils/HttpClientExt.kt | 7 ++++--- gradle/dependencies.toml | 5 ++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/datasource/build.gradle.kts b/core/datasource/build.gradle.kts index 114edb01aa..aa45701df5 100644 --- a/core/datasource/build.gradle.kts +++ b/core/datasource/build.gradle.kts @@ -32,11 +32,10 @@ dependencies { implementation(deps.moshi) implementation(deps.moshi.kotlin) implementation(deps.okHttp) - implementation(deps.okHttp.logging) + implementation(deps.okHttp.prettyLogging) 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 72aea8deb2..3d8b6f3930 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 @@ -26,8 +26,11 @@ fun createRetrofitInstance( 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() } fun createNetworkLoggingInterceptor(): Interceptor { 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 384676621a..f32626bf66 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 @@ -25,9 +25,10 @@ internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeade * * @param level logging level. By default, only the request body. */ -internal fun OkHttpClient.Builder.allowLogging(): OkHttpClient.Builder = - if (BuildConfig.DEBUG) { +internal fun OkHttpClient.Builder.allowLogging(): OkHttpClient.Builder { + return 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 9b66d181ca..210582bd45 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -76,7 +76,7 @@ reactiveNetwork = "3.0.8" walletConnectCore = "1.15.0" walletConnectWeb3 = "1.8.0" prettyLogger = "2.2.0" -prettyOkHttpLoggingInterceptor = "3.1.0" +okHttp-prettyLogging = "3.1.0" # endregion Other libraries # region Tangem @@ -203,7 +203,7 @@ material = { module = "com.google.android.material:material", version.ref = "goo moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } okHttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } -okHttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } +okHttp-prettyLogging = { module = "com.github.ihsanbal:LoggingInterceptor", version.ref = "okHttp-prettyLogging" } otaliastudiosCameraView = { module = "com.otaliastudios:cameraview", version.ref = "otaliastudiosCameraView" } shopify-buy = { module = "com.shopify.mobilebuysdk:buy3", version.ref = "shopifyBuySdk" } spongecastle-core = { module = "com.madgag.spongycastle:core", version.ref = "spongycastleCryptoCore" } @@ -225,5 +225,4 @@ reactive-network = { module = "com.github.pwittchen:reactivenetwork-rx2", versio 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 From 5b0d90152ed22f281614c313ff2c09ec5b2c9931 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 7 Jul 2023 19:01:35 +0300 Subject: [PATCH 3/5] Updated on 2026-08-14 --- app/build.gradle.kts | 7 ------- domain/legacy/build.gradle.kts | 6 ------ 2 files changed, 13 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 14433e7634..507d70e3b1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -114,13 +114,6 @@ dependencies { implementation(deps.appsflyer) implementation(deps.amplitude) implementation(deps.kotsonGson) - //TODO: refactoring: remove it when all network services moved to the datasource module - implementation(deps.retrofit) - implementation(deps.retrofit.moshi) - implementation(deps.moshi) - implementation(deps.moshi.kotlin) - implementation(deps.okHttp) - implementation(deps.okHttp.logging) implementation(deps.zendesk.chat) implementation(deps.zendesk.messaging) implementation(deps.spongecastle.core) diff --git a/domain/legacy/build.gradle.kts b/domain/legacy/build.gradle.kts index f618e11fd9..320f10a255 100644 --- a/domain/legacy/build.gradle.kts +++ b/domain/legacy/build.gradle.kts @@ -22,12 +22,6 @@ dependencies { /** Other libraries */ implementation(deps.reKotlin) - //TODO: refactoring: remove it when all network services moved to the datasource module - implementation(deps.retrofit) - implementation(deps.retrofit.moshi) - implementation(deps.moshi) - implementation(deps.moshi.kotlin) - implementation(deps.okHttp.logging) implementation(deps.timber) implementation(deps.kotlin.coroutines) From 0c638c7c96bae786f1213e8552d4fea2c457ecff Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 10 Jul 2023 12:17:27 +0300 Subject: [PATCH 4/5] Updated on 2026-08-14 --- domain/legacy/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/domain/legacy/build.gradle.kts b/domain/legacy/build.gradle.kts index 320f10a255..e9449ad7de 100644 --- a/domain/legacy/build.gradle.kts +++ b/domain/legacy/build.gradle.kts @@ -22,6 +22,8 @@ dependencies { /** Other libraries */ implementation(deps.reKotlin) + implementation(deps.moshi) + implementation(deps.moshi.kotlin) implementation(deps.timber) implementation(deps.kotlin.coroutines) From 86ca9ebbc98b6dfbb3ca7046785901f224295eb1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 10 Jul 2023 13:02:08 +0300 Subject: [PATCH 5/5] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/TapApplication.kt | 14 ++++++++------ .../com/tangem/datasource/utils/HttpClientExt.kt | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 4d7bc9bd30..9c3d7f67cb 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -174,11 +174,13 @@ class TapApplication : Application(), ImageLoaderFactory { ) if (BuildConfig.DEBUG) { - Timber.plant(object : Timber.DebugTree() { - override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { - Logger.log(priority, tag, message, t) - } - }) + Timber.plant( + object : Timber.DebugTree() { + override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { + Logger.log(priority, tag, message, t) + } + }, + ) } foregroundActivityObserver = ForegroundActivityObserver() @@ -197,7 +199,7 @@ class TapApplication : Application(), ImageLoaderFactory { if (LogConfig.network.blockchainSdkNetwork) { BlockchainSdkRetrofitBuilder.interceptors = listOf( - createNetworkLoggingInterceptor() + createNetworkLoggingInterceptor(), ) } 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 f32626bf66..4a5a6a1b75 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 @@ -31,4 +31,4 @@ internal fun OkHttpClient.Builder.allowLogging(): OkHttpClient.Builder { } else { this } -} +} \ No newline at end of file