diff --git a/app/src/main/java/com/tangem/tap/domain/termsOfUse/CardTou.kt b/app/src/main/java/com/tangem/tap/domain/termsOfUse/CardTou.kt
new file mode 100644
index 0000000000..a6050e243c
--- /dev/null
+++ b/app/src/main/java/com/tangem/tap/domain/termsOfUse/CardTou.kt
@@ -0,0 +1,46 @@
+package com.tangem.tap.domain.termsOfUse
+
+import android.content.res.Resources
+import android.net.Uri
+import androidx.core.os.ConfigurationCompat
+import com.tangem.commands.common.card.Card
+import java.util.*
+
+/**
+[REDACTED_AUTHOR]
+ */
+class CardTou {
+ private val locale: Locale = ConfigurationCompat.getLocales(Resources.getSystem().configuration).get(0)
+
+ fun getUrl(card: Card): Uri? {
+ val issuerName = card.cardData?.issuerName ?: return null
+ if (issuerName.toLowerCase() != "start2coin") return null
+
+ val baseUrl = "https://app.tangem.com/tou/"
+ val regionCode = regionCode(card.cardId) ?: "fr"
+ val filename = filename(locale.language, regionCode)
+ return Uri.parse(baseUrl + filename)
+ }
+
+ private fun filename(languageCode: String, regionCode: String): String {
+ return when {
+ languageCode == "fr" && regionCode == "ch" -> "Start2Coin-fr-ch-tangem.pdf"
+ languageCode == "de" && regionCode == "ch" -> "Start2Coin-de-ch-tangem.pdf"
+ languageCode == "en" && regionCode == "ch" -> "Start2Coin-en-ch-tangem.pdf"
+ languageCode == "it" && regionCode == "ch" -> "Start2Coin-it-ch-tangem.pdf"
+ languageCode == "fr" && regionCode == "fr" -> "Start2Coin-fr-fr-atangem.pdf"
+ languageCode == "de" && regionCode == "at" -> "Start2Coin-de-at-tangem.pdf"
+ languageCode.isEmpty() && regionCode == "fr" -> "Start2Coin-fr-fr-atangem.pdf"
+ languageCode.isEmpty() && regionCode == "ch" -> "Start2Coin-en-ch-tangem.pdf"
+ languageCode.isEmpty() && regionCode == "at" -> "Start2Coin-de-at-tangem.pdf"
+ else -> "Start2Coin-fr-fr-atangem.pdf"
+ }
+ }
+
+ private fun regionCode(cardId: String): String? = when (cardId.substring(2..3)) {
+ "0" -> "fr"
+ "1" -> "ch"
+ "2" -> "at"
+ else -> null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/domain/termsOfUse/TermsOfUse.kt b/app/src/main/java/com/tangem/tap/domain/termsOfUse/TermsOfUse.kt
deleted file mode 100644
index 7facc2c92f..0000000000
--- a/app/src/main/java/com/tangem/tap/domain/termsOfUse/TermsOfUse.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.tangem.tap.domain.termsOfUse
-
-import android.content.res.Resources
-import androidx.core.os.ConfigurationCompat
-import java.util.*
-
-/**
-[REDACTED_AUTHOR]
- */
-class TermsOfUse {
- val locale: Locale = ConfigurationCompat.getLocales(Resources.getSystem().configuration).get(0)
-
- fun getUrl(cardId: String): String? {
- val terms = CardTermsFactory.create(cardId) ?: return null
-
- return terms.getUrl(locale.country)
- }
-}
-
-class CardTermsOfUse(
- private val urlsByRegion: Map,
- private val defaultRegion: String,
-) {
-
- fun getUrl(region: String): String? {
- return urlsByRegion[region.toLowerCase()] ?: urlsByRegion[defaultRegion]
- }
-}
-
-
-class CardTermsFactory {
- companion object {
-
- fun create(cardId: String): CardTermsOfUse? {
- val batch = cardId.substring(0..3)
-
- return when (batch) {
- "CB05" -> {
- CardTermsOfUse(
- mapOf(
- "ru" to "https://yandex.ru/",
- "en" to "https://www.google.com/",
- "fr" to "https://www.qwant.com",
- ),
- "ru"
- )
- }
- else -> null
- }
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt
index 14fc7582a8..65a2c7dff6 100644
--- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt
+++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt
@@ -6,7 +6,7 @@ import com.tangem.commands.common.card.Card
import com.tangem.tap.common.redux.NotificationAction
import com.tangem.tap.common.redux.global.FiatCurrencyName
import com.tangem.tap.domain.tasks.ScanNoteResponse
-import com.tangem.tap.domain.termsOfUse.TermsOfUse
+import com.tangem.tap.domain.termsOfUse.CardTou
import com.tangem.tap.domain.twins.TwinCardNumber
import com.tangem.tap.features.details.redux.twins.CreateTwinWallet
import com.tangem.tap.network.coinmarketcap.FiatCurrency
@@ -20,7 +20,7 @@ sealed class DetailsAction : Action {
val scanNoteResponse: ScanNoteResponse,
val wallet: Wallet?,
val isCreatingTwinWalletAllowed: Boolean?,
- val termsOfUse: TermsOfUse,
+ val cardTou: CardTou,
val fiatCurrencyName: FiatCurrencyName,
val fiatCurrencies: List? = null,
) : DetailsAction()
diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt
index c26028d141..ebb0485c03 100644
--- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt
+++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt
@@ -74,7 +74,7 @@ private fun handlePrepareScreen(action: DetailsAction.PrepareScreen, state: Deta
),
securityScreenState = SecurityScreenState(currentOption = securityOption),
createTwinWalletState = twinsState,
- cardTermsOfUseUrl = action.termsOfUse.getUrl(action.card.cardId)
+ cardTermsOfUseUrl = action.cardTou.getUrl(action.card)
)
}
diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt
index 774ecfd6c6..7995acdcdb 100644
--- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt
+++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt
@@ -1,5 +1,6 @@
package com.tangem.tap.features.details.redux
+import android.net.Uri
import com.tangem.blockchain.common.Wallet
import com.tangem.commands.common.card.Card
import com.tangem.tap.common.entities.Button
@@ -19,13 +20,13 @@ data class DetailsState(
val confirmScreenState: ConfirmScreenState? = null,
val securityScreenState: SecurityScreenState? = null,
val createTwinWalletState: CreateTwinWalletState? = null,
- val cardTermsOfUseUrl: String? = null
+ val cardTermsOfUseUrl: Uri? = null,
) : StateType
data class CardInfo(
val cardId: String,
val issuer: String,
- val signedHashes: Int
+ val signedHashes: Int,
)
enum class EraseWalletState { Allowed, NotAllowedByCard, NotEmpty }
@@ -34,7 +35,7 @@ data class SecurityScreenState(
val currentOption: SecurityOption = SecurityOption.LongTap,
val selectedOption: SecurityOption = currentOption,
val allowedOptions: EnumSet = EnumSet.allOf(SecurityOption::class.java),
- val buttonProceed: Button = Button(true)
+ val buttonProceed: Button = Button(true),
)
enum class SecurityOption { LongTap, PassCode, AccessCode }
diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt
index caa9780539..8578a60304 100644
--- a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt
+++ b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt
@@ -1,7 +1,6 @@
package com.tangem.tap.features.details.ui
import android.content.Intent
-import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.activity.OnBackPressedCallback
@@ -85,7 +84,7 @@ class DetailsFragment : Fragment(R.layout.fragment_details), StoreSubscriber
+ android:text="@string/details_row_title_card_tou" />
The wallet creation procedure consists of three steps. You must complete it to the end, otherwise you will have to start from the beginning.
Tap the card #%s
You have already started the process of recreating twin wallet. If you interrupt it, you won\'t be able to use your twin cards until you start it again and complete recreating the wallet.
- Terms of use
+ Card terms of use
The twin address was successfully created