Updated on 2026-08-14
This commit is contained in:
parent
0551a8f2fe
commit
9cc51216bc
5 changed files with 57 additions and 12 deletions
|
|
@ -59,7 +59,7 @@ import com.tangem.domain.wallets.repository.WalletsRepository
|
||||||
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
|
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
|
||||||
import com.tangem.features.onramp.OnrampFeatureToggles
|
import com.tangem.features.onramp.OnrampFeatureToggles
|
||||||
import com.tangem.operations.attestation.OnlineCardVerifier
|
import com.tangem.operations.attestation.OnlineCardVerifier
|
||||||
import com.tangem.operations.attestation.api.TangemApiServiceLogging
|
import com.tangem.operations.attestation.api.TangemApiServiceSettings
|
||||||
import com.tangem.tap.common.analytics.AnalyticsFactory
|
import com.tangem.tap.common.analytics.AnalyticsFactory
|
||||||
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
|
||||||
import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler
|
import com.tangem.tap.common.analytics.handlers.BlockchainExceptionHandler
|
||||||
|
|
@ -311,7 +311,8 @@ abstract class TangemApplication : Application(), ImageLoaderFactory, Configurat
|
||||||
createNetworkLoggingInterceptor(),
|
createNetworkLoggingInterceptor(),
|
||||||
ChuckerInterceptor(this),
|
ChuckerInterceptor(this),
|
||||||
)
|
)
|
||||||
TangemApiServiceLogging.addInterceptors(
|
|
||||||
|
TangemApiServiceSettings.addInterceptors(
|
||||||
createNetworkLoggingInterceptor(),
|
createNetworkLoggingInterceptor(),
|
||||||
ChuckerInterceptor(this),
|
ChuckerInterceptor(this),
|
||||||
NetworkLogsSaveInterceptor(appLogsStore),
|
NetworkLogsSaveInterceptor(appLogsStore),
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ import com.tangem.datasource.api.common.config.managers.ApiConfigsManager
|
||||||
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
||||||
import com.tangem.datasource.local.preferences.PreferencesKeys
|
import com.tangem.datasource.local.preferences.PreferencesKeys
|
||||||
import com.tangem.datasource.local.preferences.utils.getObjectMap
|
import com.tangem.datasource.local.preferences.utils.getObjectMap
|
||||||
|
import com.tangem.datasource.utils.AddHeadersInterceptor
|
||||||
|
import com.tangem.datasource.utils.RequestHeader
|
||||||
|
import com.tangem.operations.attestation.api.TangemApiServiceSettings
|
||||||
import com.tangem.sdk.DefaultSessionViewDelegate
|
import com.tangem.sdk.DefaultSessionViewDelegate
|
||||||
import com.tangem.sdk.api.featuretoggles.CardSdkFeatureToggles
|
import com.tangem.sdk.api.featuretoggles.CardSdkFeatureToggles
|
||||||
import com.tangem.sdk.extensions.*
|
import com.tangem.sdk.extensions.*
|
||||||
|
|
@ -29,6 +32,8 @@ import com.tangem.sdk.nfc.NfcManager
|
||||||
import com.tangem.sdk.storage.create
|
import com.tangem.sdk.storage.create
|
||||||
import com.tangem.tap.foregroundActivityObserver
|
import com.tangem.tap.foregroundActivityObserver
|
||||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||||
|
import com.tangem.utils.info.AppInfoProvider
|
||||||
|
import com.tangem.utils.version.AppVersionProvider
|
||||||
import com.tangem.wallet.BuildConfig
|
import com.tangem.wallet.BuildConfig
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
|
@ -45,12 +50,15 @@ import javax.inject.Singleton
|
||||||
*
|
*
|
||||||
[REDACTED_AUTHOR]
|
[REDACTED_AUTHOR]
|
||||||
*/
|
*/
|
||||||
|
@Suppress("LongParameterList")
|
||||||
@Singleton
|
@Singleton
|
||||||
internal class DefaultCardSdkProvider @Inject constructor(
|
internal class DefaultCardSdkProvider @Inject constructor(
|
||||||
private val analyticsExceptionHandler: AnalyticsExceptionHandler,
|
private val analyticsExceptionHandler: AnalyticsExceptionHandler,
|
||||||
private val dispatchers: CoroutineDispatcherProvider,
|
private val dispatchers: CoroutineDispatcherProvider,
|
||||||
private val cardSdkFeatureToggles: CardSdkFeatureToggles,
|
private val cardSdkFeatureToggles: CardSdkFeatureToggles,
|
||||||
private val apiConfigsManager: ApiConfigsManager,
|
private val apiConfigsManager: ApiConfigsManager,
|
||||||
|
appVersionProvider: AppVersionProvider,
|
||||||
|
appInfoProvider: AppInfoProvider,
|
||||||
appPreferencesStore: AppPreferencesStore,
|
appPreferencesStore: AppPreferencesStore,
|
||||||
) : CardSdkProvider, CardSdkOwner {
|
) : CardSdkProvider, CardSdkOwner {
|
||||||
|
|
||||||
|
|
@ -82,6 +90,15 @@ internal class DefaultCardSdkProvider @Inject constructor(
|
||||||
}
|
}
|
||||||
.launchIn(CoroutineScope(SupervisorJob() + dispatchers.main))
|
.launchIn(CoroutineScope(SupervisorJob() + dispatchers.main))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TangemApiServiceSettings.addInterceptors(
|
||||||
|
AddHeadersInterceptor(
|
||||||
|
requestHeader = RequestHeader.AppVersionPlatformHeaders(
|
||||||
|
appVersionProvider = appVersionProvider,
|
||||||
|
appInfoProvider = appInfoProvider,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun register(activity: FragmentActivity) = runBlocking(dispatchers.mainImmediate) {
|
override fun register(activity: FragmentActivity) = runBlocking(dispatchers.mainImmediate) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.tangem.datasource.utils
|
||||||
|
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.Response
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interceptors for adding headers
|
||||||
|
*
|
||||||
|
* @property requestHeaders request headers
|
||||||
|
*
|
||||||
|
[REDACTED_AUTHOR]
|
||||||
|
*/
|
||||||
|
class AddHeadersInterceptor(
|
||||||
|
private val requestHeaders: Set<RequestHeader>,
|
||||||
|
) : Interceptor {
|
||||||
|
|
||||||
|
constructor(requestHeader: RequestHeader) : this(requestHeaders = setOf(requestHeader))
|
||||||
|
|
||||||
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
val requestBuilder = chain.request().newBuilder()
|
||||||
|
|
||||||
|
requestHeaders
|
||||||
|
.flatMap { it.values.toList() }
|
||||||
|
.forEach { (name, valueProvider) ->
|
||||||
|
val value = runBlocking { valueProvider() }
|
||||||
|
|
||||||
|
requestBuilder.addHeader(name = name, value = value)
|
||||||
|
}
|
||||||
|
|
||||||
|
val request = requestBuilder.build()
|
||||||
|
|
||||||
|
return chain.proceed(request)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -19,15 +19,7 @@ import retrofit2.Invocation
|
||||||
/** Extension for adding headers [requestHeaders] to every [OkHttpClient] request */
|
/** Extension for adding headers [requestHeaders] to every [OkHttpClient] request */
|
||||||
internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeader): OkHttpClient.Builder {
|
internal fun OkHttpClient.Builder.addHeaders(vararg requestHeaders: RequestHeader): OkHttpClient.Builder {
|
||||||
return addInterceptor(
|
return addInterceptor(
|
||||||
Interceptor { chain ->
|
interceptor = AddHeadersInterceptor(requestHeaders = requestHeaders.toSet()),
|
||||||
val request = chain.request().newBuilder().apply {
|
|
||||||
requestHeaders
|
|
||||||
.flatMap { it.values.toList() }
|
|
||||||
.forEach { addHeader(it.first, runBlocking { it.second.invoke() }) }
|
|
||||||
}.build()
|
|
||||||
|
|
||||||
chain.proceed(request)
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
tangemBlockchainSdk = "develop-1079"
|
tangemBlockchainSdk = "develop-1079"
|
||||||
#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds
|
#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds
|
||||||
tangemCardSdk = "develop-475"
|
tangemCardSdk = "develop-480"
|
||||||
#tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^
|
#tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^
|
||||||
tangemVico = "2.0.0-alpha.25-tangem12"
|
tangemVico = "2.0.0-alpha.25-tangem12"
|
||||||
#tangemVico = "0.0.1" # Keep it! - used for local builds ^
|
#tangemVico = "0.0.1" # Keep it! - used for local builds ^
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue