Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-13 16:42:46 +04:00
parent 9ee6611585
commit ba28cf5b6d
29 changed files with 761 additions and 41 deletions

View file

@ -84,5 +84,7 @@ sealed interface FeedbackEmailType {
) : Visa()
data class FeatureIsBeta(override val walletMetaInfo: WalletMetaInfo) : Visa()
data class KycRejected(override val walletMetaInfo: WalletMetaInfo, val customerId: String) : Visa()
}
}

View file

@ -54,6 +54,10 @@ internal class FeedbackDataBuilder {
builder.appendKeyValue("User Wallet ID", userWalletId)
}
fun addCustomerId(customerId: String) {
builder.appendKeyValue("ID: ", customerId)
}
fun addUserWalletMetaInfo(walletMetaInfo: WalletMetaInfo) {
builder.appendKeyValue("Mobile Wallet is backed up", walletMetaInfo.hotWalletIsBackedUp?.toString())
builder.appendKeyValue("Card ID", walletMetaInfo.cardId)
@ -116,6 +120,7 @@ internal class FeedbackDataBuilder {
is FeedbackEmailType.Visa.Dispute,
is FeedbackEmailType.Visa.FeatureIsBeta,
is FeedbackEmailType.Visa.Withdrawal,
is FeedbackEmailType.Visa.KycRejected,
-> return
is FeedbackEmailType.Visa.DisputeV2 -> when (type.item) {
is TangemPayTxHistoryItem.Collateral -> "Receive/Withdraw"

View file

@ -48,6 +48,7 @@ class SendFeedbackEmailUseCase(
private fun getAddress(type: FeedbackEmailType): String {
return when {
type is FeedbackEmailType.Visa.KycRejected -> PAERA_SUPPORT_EMAIL
type.isVisaEmail() -> TANGEM_VISA_SUPPORT_EMAIL
type.walletMetaInfo?.isStart2Coin == true -> START2COIN_SUPPORT_EMAIL
else -> TANGEM_SUPPORT_EMAIL
@ -95,6 +96,7 @@ class SendFeedbackEmailUseCase(
is FeedbackEmailType.Visa.Dispute,
is FeedbackEmailType.Visa.DisputeV2,
is FeedbackEmailType.Visa.FeatureIsBeta,
is FeedbackEmailType.Visa.KycRejected,
-> this
is FeedbackEmailType.DirectUserRequest,
is FeedbackEmailType.BackupProblem,

View file

@ -39,6 +39,7 @@ internal class EmailMessageBodyResolver(
is FeedbackEmailType.Visa.DisputeV2 -> addTangemPayDisputeRequestBody(type)
is FeedbackEmailType.Visa.Withdrawal -> addTangemPayWithdrawalRequestBody(type)
is FeedbackEmailType.Visa.FeatureIsBeta -> addTangemPayBetaRequestBody(type)
is FeedbackEmailType.Visa.KycRejected -> addTangemPayKycRejectedRequestBody(type)
}
return build()
@ -70,6 +71,12 @@ internal class EmailMessageBodyResolver(
}
}
private fun FeedbackDataBuilder.addTangemPayKycRejectedRequestBody(type: FeedbackEmailType.Visa.KycRejected) {
addTangemPayPhoneInfoBody(type)
addDelimiter()
addCustomerId(customerId = type.customerId)
}
private suspend fun FeedbackDataBuilder.addTangemPayWithdrawalRequestBody(
type: FeedbackEmailType.Visa.Withdrawal,
) {

View file

@ -27,6 +27,7 @@ internal class EmailMessageTitleResolver(private val resources: Resources) {
is FeedbackEmailType.Visa.FailedIssueCard,
is FeedbackEmailType.Visa.Withdrawal,
is FeedbackEmailType.Visa.FeatureIsBeta,
is FeedbackEmailType.Visa.KycRejected,
is FeedbackEmailType.PreActivatedWallet,
is FeedbackEmailType.BackupProblem,
-> R.string.feedback_preface_support

View file

@ -47,6 +47,7 @@ internal class EmailSubjectResolver(private val resources: Resources) {
-> "[Visa] [DISPUTE] {auto-filled subject}"
is FeedbackEmailType.Visa.Withdrawal -> "[Visa] [WITHDRAWAL] {auto-filled subject}"
is FeedbackEmailType.Visa.FeatureIsBeta -> "[VISA] [FEEDBACK]"
is FeedbackEmailType.Visa.KycRejected -> "Tangem Pay - [VISA] [KYC REJECTED]"
}
}
}

View file

@ -4,4 +4,5 @@ internal const val GMAIL_MAX_FILE_SIZE = 24_900_000 // ≈ 25 MB
internal const val START2COIN_SUPPORT_EMAIL = "cardsupport@start2coin.com"
internal const val TANGEM_SUPPORT_EMAIL = "support@tangem.com"
internal const val TANGEM_VISA_SUPPORT_EMAIL = "pay@tangem.com"
internal const val TANGEM_VISA_SUPPORT_EMAIL = "pay@tangem.com"
internal const val PAERA_SUPPORT_EMAIL = "support@paera.com"