diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt index 56963e7456..4125f7ed48 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt @@ -1,18 +1,7 @@ package com.tangem.datasource.api.tangemTech -import com.tangem.datasource.api.tangemTech.models.CoinsResponse -import com.tangem.datasource.api.tangemTech.models.CurrenciesResponse -import com.tangem.datasource.api.tangemTech.models.GeoResponse -import com.tangem.datasource.api.tangemTech.models.RatesResponse -import com.tangem.datasource.api.tangemTech.models.ReferralResponse -import com.tangem.datasource.api.tangemTech.models.StartReferralBody -import com.tangem.datasource.api.tangemTech.models.UserTokensResponse -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.POST -import retrofit2.http.PUT -import retrofit2.http.Path -import retrofit2.http.Query +import com.tangem.datasource.api.tangemTech.models.* +import retrofit2.http.* /** * Interface of Tangem Tech API @@ -49,9 +38,17 @@ interface TangemTechApi { /** Returns referral status by [walletId] */ @GET("referral/{walletId}") - suspend fun getReferralStatus(@Path("walletId") walletId: String): ReferralResponse + suspend fun getReferralStatus( + @Header("card_public_key") cardPublicKey: String, + @Header("card_id") cardId: String, + @Path("walletId") walletId: String, + ): ReferralResponse /** Make user referral, requires [StartReferralBody] */ @POST("referral") - suspend fun startReferral(@Body startReferralBody: StartReferralBody): ReferralResponse + suspend fun startReferral( + @Header("card_public_key") cardPublicKey: String, + @Header("card_id") cardId: String, + @Body startReferralBody: StartReferralBody, + ): ReferralResponse } \ 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 d0a72c025c..4ecc2b2529 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 @@ -6,7 +6,6 @@ import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.utils.RequestHeader.* import com.tangem.datasource.utils.addHeaders import com.tangem.datasource.utils.allowLogging -import com.tangem.lib.auth.AuthProvider import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -22,7 +21,7 @@ class NetworkModule { @Provides @Singleton - fun provideTangemTechApi(authProvider: AuthProvider, @NetworkMoshi moshi: Moshi): TangemTechApi { + fun provideTangemTechApi(@NetworkMoshi moshi: Moshi): TangemTechApi { return Retrofit.Builder() .addConverterFactory(MoshiConverterFactory.create(moshi)) .baseUrl(PROD_TANGEM_TECH_BASE_URL) @@ -30,7 +29,8 @@ class NetworkModule { OkHttpClient.Builder() .addHeaders( CacheControlHeader, - AuthenticationHeader(authProvider), + // TODO("refactor header init") get auth data after biometric auth to avoid race condition + // AuthenticationHeader(authProvider), ) .allowLogging() .build(), diff --git a/features/referral/data/build.gradle.kts b/features/referral/data/build.gradle.kts index ab23b2ba7a..15aaa39fdf 100644 --- a/features/referral/data/build.gradle.kts +++ b/features/referral/data/build.gradle.kts @@ -12,6 +12,10 @@ dependencies { implementation(project(":core:datasource")) implementation(project(":core:utils")) implementation(project(":features:referral:domain")) + + + /** Libs */ + implementation(project(":libs:auth")) /** Time */ implementation(deps.jodatime) diff --git a/features/referral/data/src/main/java/com/tangem/feature/referral/data/ReferralRepositoryImpl.kt b/features/referral/data/src/main/java/com/tangem/feature/referral/data/ReferralRepositoryImpl.kt index c6f2151478..7f8d7470e7 100644 --- a/features/referral/data/src/main/java/com/tangem/feature/referral/data/ReferralRepositoryImpl.kt +++ b/features/referral/data/src/main/java/com/tangem/feature/referral/data/ReferralRepositoryImpl.kt @@ -6,6 +6,7 @@ import com.tangem.datasource.demo.DemoModeDatasource import com.tangem.feature.referral.converters.ReferralConverter import com.tangem.feature.referral.domain.ReferralRepository import com.tangem.feature.referral.domain.models.ReferralData +import com.tangem.lib.auth.AuthProvider import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.withContext import javax.inject.Inject @@ -15,6 +16,7 @@ internal class ReferralRepositoryImpl @Inject constructor( private val referralConverter: ReferralConverter, private val coroutineDispatcher: CoroutineDispatcherProvider, private val demoModeDatasource: DemoModeDatasource, + private val authProvider: AuthProvider, ) : ReferralRepository { override val isDemoMode: Boolean @@ -22,7 +24,13 @@ internal class ReferralRepositoryImpl @Inject constructor( override suspend fun getReferralStatus(walletId: String): ReferralData { return withContext(coroutineDispatcher.io) { - referralConverter.convert(referralApi.getReferralStatus(walletId)) + referralConverter.convert( + referralApi.getReferralStatus( + cardPublicKey = authProvider.getCardPublicKey(), + cardId = authProvider.getCardId(), + walletId = walletId, + ), + ) } } @@ -35,7 +43,9 @@ internal class ReferralRepositoryImpl @Inject constructor( return withContext(coroutineDispatcher.io) { referralConverter.convert( referralApi.startReferral( - StartReferralBody( + cardPublicKey = authProvider.getCardPublicKey(), + cardId = authProvider.getCardId(), + startReferralBody = StartReferralBody( walletId = walletId, networkId = networkId, tokenId = tokenId, diff --git a/features/referral/data/src/main/java/com/tangem/feature/referral/di/ReferralRepositoryModule.kt b/features/referral/data/src/main/java/com/tangem/feature/referral/di/ReferralRepositoryModule.kt index 98454f3c3f..4d1da6230a 100644 --- a/features/referral/data/src/main/java/com/tangem/feature/referral/di/ReferralRepositoryModule.kt +++ b/features/referral/data/src/main/java/com/tangem/feature/referral/di/ReferralRepositoryModule.kt @@ -5,6 +5,7 @@ import com.tangem.datasource.demo.DemoModeDatasource import com.tangem.feature.referral.converters.ReferralConverter import com.tangem.feature.referral.data.ReferralRepositoryImpl import com.tangem.feature.referral.domain.ReferralRepository +import com.tangem.lib.auth.AuthProvider import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.Module import dagger.Provides @@ -23,12 +24,14 @@ class ReferralRepositoryModule { referralConverter: ReferralConverter, coroutineDispatcherProvider: CoroutineDispatcherProvider, demoModeDatasource: DemoModeDatasource, + authProvider: AuthProvider, ): ReferralRepository { return ReferralRepositoryImpl( referralApi = tangemTechApi, referralConverter = referralConverter, coroutineDispatcher = coroutineDispatcherProvider, demoModeDatasource = demoModeDatasource, + authProvider = authProvider, ) } } \ No newline at end of file