From 9c2ed501565785d8834c73f288423e9232b9b26b Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 10 Jan 2023 18:09:17 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../datasource/api/referral/ReferralApi.kt | 22 --------- .../api/referral/models/ReferralResponse.kt | 48 ------------------ .../api/tangemTech/TangemTechApi.kt | 11 +++++ .../api/tangemTech/models/ReferralResponse.kt | 49 +++++++++++++++++++ .../models/StartReferralBody.kt | 2 +- .../com/tangem/datasource/di/NetworkModule.kt | 19 ------- .../referral/converters/ReferralConverter.kt | 7 ++- .../referral/data/ReferralRepositoryImpl.kt | 6 +-- .../referral/di/ReferralRepositoryModule.kt | 8 +-- 9 files changed, 72 insertions(+), 100 deletions(-) delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/api/referral/ReferralApi.kt delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/api/referral/models/ReferralResponse.kt create mode 100644 core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/ReferralResponse.kt rename core/datasource/src/main/java/com/tangem/datasource/api/{referral => tangemTech}/models/StartReferralBody.kt (85%) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/referral/ReferralApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/referral/ReferralApi.kt deleted file mode 100644 index c3b7ff2200..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/api/referral/ReferralApi.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tangem.datasource.api.referral - -import com.tangem.datasource.api.referral.models.ReferralResponse -import com.tangem.datasource.api.referral.models.StartReferralBody -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.POST -import retrofit2.http.Path - -/** - * Api for referral feature - */ -interface ReferralApi { - - /** Returns referral status by [walletId] */ - @GET("referral/{walletId}") - suspend fun getReferralStatus(@Path("walletId") walletId: String): ReferralResponse - - /** Make user referral, requires [StartReferralBody] */ - @POST("referral") - suspend fun startReferral(@Body startReferralBody: StartReferralBody): ReferralResponse -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/ReferralResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/ReferralResponse.kt deleted file mode 100644 index 3066ab45a7..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/ReferralResponse.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.tangem.datasource.api.referral.models - -import com.squareup.moshi.Json -import com.squareup.moshi.JsonClass -import org.joda.time.DateTime - -/** - * Main response class for referral API - * contains all necessary info about users program status - */ -data class ReferralResponse( - @Json(name = "conditions") val conditions: Conditions, - @Json(name = "referral") val referral: Referral?, -) - -data class Conditions( - @Json(name = "award") val award: Int, - @Json(name = "discount") val discount: Discount, - @Json(name = "awards") val awards: List, - @Json(name = "tosLink") val tosLink: String, -) - -data class Discount( - @Json(name = "amount") val amount: Int, - @Json(name = "type") val discountType: String, -) - -data class Award( - @Json(name = "amount") val amount: Int, - @Json(name = "token") val token: Token, -) - -data class Token( - @Json(name = "id") val id: String, - @Json(name = "name") val name: String, - @Json(name = "symbol") val symbol: String, - @Json(name = "networkId") val networkId: String, - @Json(name = "contractAddress") val contractAddress: String?, - @Json(name = "decimalCount") val decimalCount: Int?, -) - -data class Referral( - @Json(name = "shareLink") val shareLink: String, - @Json(name = "address") val address: String, - @Json(name = "promoCode") val promocode: String, - @Json(name = "walletsPurchased") val walletsPurchased: Int, - @Json(name = "termsAcceptedAt") val termsAcceptedAt: String?, -) \ No newline at end of file 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 df8c21d2ea..711963d504 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 @@ -4,9 +4,12 @@ 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 @@ -46,4 +49,12 @@ interface TangemTechApi { @PUT("user-tokens/{user-id}") suspend fun saveUserTokens(@Path(value = "user-id") userId: String, @Body userTokens: UserTokensResponse) + + /** Returns referral status by [walletId] */ + @GET("referral/{walletId}") + suspend fun getReferralStatus(@Path("walletId") walletId: String): ReferralResponse + + /** Make user referral, requires [StartReferralBody] */ + @POST("referral") + suspend fun startReferral(@Body startReferralBody: StartReferralBody): ReferralResponse } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/ReferralResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/ReferralResponse.kt new file mode 100644 index 0000000000..82a76a3ed4 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/ReferralResponse.kt @@ -0,0 +1,49 @@ +package com.tangem.datasource.api.tangemTech.models + +import com.squareup.moshi.Json + +/** + * Main response class for referral API + * contains all necessary info about users program status + */ +data class ReferralResponse( + @Json(name = "conditions") val conditions: Conditions, + @Json(name = "referral") val referral: Referral?, +) { + + data class Conditions( + @Json(name = "award") val award: Int, + @Json(name = "discount") val discount: Discount, + @Json(name = "awards") val awards: List, + @Json(name = "tosLink") val tosLink: String, + ) { + + data class Discount( + @Json(name = "amount") val amount: Int, + @Json(name = "type") val discountType: String, + ) + + data class Award( + @Json(name = "amount") val amount: Int, + @Json(name = "token") val token: Token, + ) { + + data class Token( + @Json(name = "id") val id: String, + @Json(name = "name") val name: String, + @Json(name = "symbol") val symbol: String, + @Json(name = "networkId") val networkId: String, + @Json(name = "contractAddress") val contractAddress: String?, + @Json(name = "decimalCount") val decimalCount: Int?, + ) + } + } + + data class Referral( + @Json(name = "shareLink") val shareLink: String, + @Json(name = "address") val address: String, + @Json(name = "promoCode") val promocode: String, + @Json(name = "walletsPurchased") val walletsPurchased: Int, + @Json(name = "termsAcceptedAt") val termsAcceptedAt: String?, + ) +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/StartReferralBody.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/StartReferralBody.kt similarity index 85% rename from core/datasource/src/main/java/com/tangem/datasource/api/referral/models/StartReferralBody.kt rename to core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/StartReferralBody.kt index 98a0a8ab90..8f2c933f19 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/StartReferralBody.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/StartReferralBody.kt @@ -1,4 +1,4 @@ -package com.tangem.datasource.api.referral.models +package com.tangem.datasource.api.tangemTech.models import com.squareup.moshi.Json 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 84de623ee4..42434bf7d4 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 @@ -3,7 +3,6 @@ package com.tangem.datasource.di import com.squareup.moshi.Moshi import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import com.tangem.datasource.api.common.BigDecimalAdapter -import com.tangem.datasource.api.referral.ReferralApi import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.utils.RequestHeader.AuthenticationHeader import com.tangem.datasource.utils.RequestHeader.CacheControlHeader @@ -51,24 +50,6 @@ class NetworkModule { .create(TangemTechApi::class.java) } - @Provides - @Singleton - fun provideReferralApi(authProvider: AuthProvider, moshi: Moshi): ReferralApi { - return Retrofit.Builder() - .addConverterFactory( - MoshiConverterFactory.create(moshi), - ) - .baseUrl(PROD_TANGEM_TECH_BASE_URL) - .client( - OkHttpClient.Builder() - .addHeaders(AuthenticationHeader(authProvider)) - .allowLogging() - .build(), - ) - .build() - .create(ReferralApi::class.java) - } - private companion object { const val PROD_TANGEM_TECH_BASE_URL = "https://api.tangem-tech.com/v1/" const val DEV_TANGEM_TECH_BASE_URL = "https://devapi.tangem-tech.com/v1/" diff --git a/features/referral/data/src/main/java/com/tangem/feature/referral/converters/ReferralConverter.kt b/features/referral/data/src/main/java/com/tangem/feature/referral/converters/ReferralConverter.kt index 7e468c0500..71f237eaac 100644 --- a/features/referral/data/src/main/java/com/tangem/feature/referral/converters/ReferralConverter.kt +++ b/features/referral/data/src/main/java/com/tangem/feature/referral/converters/ReferralConverter.kt @@ -1,7 +1,6 @@ package com.tangem.feature.referral.converters -import com.tangem.datasource.api.referral.models.ReferralResponse -import com.tangem.datasource.api.referral.models.Token +import com.tangem.datasource.api.tangemTech.models.ReferralResponse import com.tangem.feature.referral.domain.models.DiscountType import com.tangem.feature.referral.domain.models.ReferralData import com.tangem.feature.referral.domain.models.ReferralInfo @@ -46,9 +45,9 @@ class ReferralConverter @Inject constructor() : Converter { +private class TokenConverter : Converter { - override fun convert(value: Token): TokenData { + override fun convert(value: ReferralResponse.Conditions.Award.Token): TokenData { return TokenData( id = value.id, name = value.name, 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 bf2387f070..371254979a 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 @@ -1,7 +1,7 @@ package com.tangem.feature.referral.data -import com.tangem.datasource.api.referral.ReferralApi -import com.tangem.datasource.api.referral.models.StartReferralBody +import com.tangem.datasource.api.tangemTech.TangemTechApi +import com.tangem.datasource.api.tangemTech.models.StartReferralBody import com.tangem.feature.referral.converters.ReferralConverter import com.tangem.feature.referral.domain.ReferralRepository import com.tangem.feature.referral.domain.models.ReferralData @@ -10,7 +10,7 @@ import kotlinx.coroutines.withContext import javax.inject.Inject internal class ReferralRepositoryImpl @Inject constructor( - private val referralApi: ReferralApi, + private val referralApi: TangemTechApi, private val referralConverter: ReferralConverter, private val coroutineDispatcher: CoroutineDispatcherProvider, ) : ReferralRepository { 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 7a88c423cc..1f723fe16f 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 @@ -1,6 +1,6 @@ package com.tangem.feature.referral.di -import com.tangem.datasource.api.referral.ReferralApi +import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.feature.referral.converters.ReferralConverter import com.tangem.feature.referral.data.ReferralRepositoryImpl import com.tangem.feature.referral.domain.ReferralRepository @@ -18,12 +18,14 @@ class ReferralRepositoryModule { @Provides @Singleton fun provideReferralRepository( - referralApi: ReferralApi, + tangemTechApi: TangemTechApi, referralConverter: ReferralConverter, coroutineDispatcherProvider: CoroutineDispatcherProvider, ): ReferralRepository { return ReferralRepositoryImpl( - referralApi, referralConverter, coroutineDispatcherProvider, + referralApi = tangemTechApi, + referralConverter = referralConverter, + coroutineDispatcher = coroutineDispatcherProvider, ) } } \ No newline at end of file