diff --git a/buildSrc/src/main/java/Dependency.kt b/buildSrc/src/main/java/Dependency.kt index bd91e1bdaa..84f6380c8c 100644 --- a/buildSrc/src/main/java/Dependency.kt +++ b/buildSrc/src/main/java/Dependency.kt @@ -42,6 +42,7 @@ object Library { "com.google.android.gms:play-services-wallet:" + Versions.googlePlayServicesWallet const val hilt = "com.google.dagger:hilt-android:" + Versions.hilt const val hiltKapt = "com.google.dagger:hilt-compiler:" + Versions.hilt + const val jodatime = "net.danlew:android.joda:" + Versions.jodatime const val kotsonGsonExt = "com.github.salomonbrys.kotson:kotson:" + Versions.kotsonGsonExt const val lottie = "com.airbnb.android:lottie:" + Versions.lottie const val materialComponent = "com.google.android.material:material:" + Versions.googleMaterialComponent diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index 56e26ff54e..b52ccb4d7b 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -36,6 +36,7 @@ object Versions { const val googlePlayCoreKtx = "1.8.1" const val googlePlayServicesWallet = "19.1.0" const val hilt = "2.44" + const val jodatime = "2.12.1" const val kotsonGsonExt = "2.5.0" const val lottie = "3.4.0" const val moshi = "1.12.0" diff --git a/core/datasource/build.gradle.kts b/core/datasource/build.gradle.kts index 2d5eb60c3e..ba85cac77f 100644 --- a/core/datasource/build.gradle.kts +++ b/core/datasource/build.gradle.kts @@ -43,4 +43,7 @@ dependencies { implementation(Library.moshiKotlin) implementation(Library.okHttp) implementation(Library.okHttpLogging) + + /** Time */ + implementation(Library.jodatime) } \ No newline at end of file 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 index ccaa203e9c..42445f931d 100644 --- 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 @@ -1,7 +1,22 @@ 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.Query + /** - * Api for referral functionality + * Api for referral feature */ interface ReferralApi { + + /** Returns referral status by [walletId] */ + @GET("referral/{walletId}") + suspend fun getReferralStatus(@Query("name") 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 new file mode 100644 index 0000000000..16c6cd1fa6 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/ReferralResponse.kt @@ -0,0 +1,42 @@ +package com.tangem.datasource.api.referral.models + +import com.squareup.moshi.Json +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, +) + +data class Conditions( + @Json(name = "conditions") val award: Int, + @Json(name = "discount") val discount: Int, + @Json(name = "discountType") val discountType: DiscountType, + @Json(name = "tosLink") val tosLink: String, + @Json(name = "tokens") val tokens: List, + @Json(name = "referral") val referral: Referral, +) + +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: DateTime?, +) + +enum class DiscountType { + PERCENTAGE, VALUE +} \ 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/referral/models/StartReferralBody.kt new file mode 100644 index 0000000000..98a0a8ab90 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/api/referral/models/StartReferralBody.kt @@ -0,0 +1,11 @@ +package com.tangem.datasource.api.referral.models + +import com.squareup.moshi.Json + +/** Body for make user referral */ +data class StartReferralBody( + @Json(name = "walletId") val walletId: String, + @Json(name = "networkId") val networkId: String, + @Json(name = "tokenId") val tokenId: String, + @Json(name = "address") val address: String, +) \ No newline at end of file