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