Updated on 2026-08-14

This commit is contained in:
Tangem 2021-02-19 10:47:44 +03:00
parent 176d3d5ce1
commit cc1b9636d2
9 changed files with 89 additions and 3 deletions

View file

@ -0,0 +1,52 @@
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<String, String>,
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
}
}
}
}

View file

@ -6,6 +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.twins.TwinCardNumber
import com.tangem.tap.features.details.redux.twins.CreateTwinWallet
import com.tangem.tap.network.coinmarketcap.FiatCurrency
@ -19,6 +20,7 @@ sealed class DetailsAction : Action {
val scanNoteResponse: ScanNoteResponse,
val wallet: Wallet?,
val isCreatingTwinWalletAllowed: Boolean?,
val termsOfUse: TermsOfUse,
val fiatCurrencyName: FiatCurrencyName,
val fiatCurrencies: List<FiatCurrencyName>? = null,
) : DetailsAction()

View file

@ -73,7 +73,8 @@ private fun handlePrepareScreen(action: DetailsAction.PrepareScreen, state: Deta
action.fiatCurrencyName
),
securityScreenState = SecurityScreenState(currentOption = securityOption),
createTwinWalletState = twinsState
createTwinWalletState = twinsState,
cardTermsOfUseUrl = action.termsOfUse.getUrl(action.card.cardId)
)
}

View file

@ -18,7 +18,8 @@ data class DetailsState(
val eraseWalletState: EraseWalletState? = null,
val confirmScreenState: ConfirmScreenState? = null,
val securityScreenState: SecurityScreenState? = null,
val createTwinWalletState: CreateTwinWalletState? = null
val createTwinWalletState: CreateTwinWalletState? = null,
val cardTermsOfUseUrl: String? = null
) : StateType
data class CardInfo(

View file

@ -1,5 +1,7 @@
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
@ -80,6 +82,13 @@ class DetailsFragment : Fragment(R.layout.fragment_details), StoreSubscriber<Det
tv_disclaimer.setOnClickListener { store.dispatch(DetailsAction.ShowDisclaimer) }
tv_card_tou.show(state.cardTermsOfUseUrl != null)
tv_card_tou.setOnClickListener {
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(state.cardTermsOfUseUrl)
startActivity(intent)
}
if (state.createTwinWalletState != null) {
if (state.createTwinWalletState.allowRecreatingWallet == true) {
tv_erase_wallet.show()

View file

@ -22,6 +22,7 @@ import com.tangem.tap.common.qrCodeScan.ScanQrCodeActivity
import com.tangem.tap.common.snackBar.MaxAmountSnackbar
import com.tangem.tap.common.text.truncateMiddleWith
import com.tangem.tap.common.toggleWidget.*
import com.tangem.tap.domain.termsOfUse.TermsOfUse
import com.tangem.tap.features.send.BaseStoreFragment
import com.tangem.tap.features.send.redux.*
import com.tangem.tap.features.send.redux.AddressPayIdActionUi.*
@ -71,6 +72,8 @@ class SendFragment : BaseStoreFragment(R.layout.fragment_send) {
setupAmountLayout()
setupFeeLayout()
val locale = TermsOfUse().locale
btnSend.setOnClickListener {
store.dispatch(SendActionUi.SendAmountToRecipient(
Message(getString(R.string.initial_message_sign_header))

View file

@ -18,6 +18,7 @@ import com.tangem.blockchain.common.address.AddressType
import com.tangem.tap.common.extensions.*
import com.tangem.tap.common.redux.navigation.AppScreen
import com.tangem.tap.common.redux.navigation.NavigationAction
import com.tangem.tap.domain.termsOfUse.TermsOfUse
import com.tangem.tap.domain.twins.TwinCardNumber
import com.tangem.tap.features.details.redux.DetailsAction
import com.tangem.tap.features.wallet.redux.*
@ -312,6 +313,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber<Walle
scanNoteResponse.card, scanNoteResponse,
store.state.walletState.wallet,
store.state.globalState.configManager?.config?.isCreatingTwinCardsAllowed,
TermsOfUse(),
store.state.globalState.appCurrency
))
store.dispatch(NavigationAction.NavigateTo(AppScreen.Details))