diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index cbf3127021..ddf5455028 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -258,6 +258,7 @@ Aktivieren Aktiviert Fehler + Geschätzte Gebühr Umtausch Erkunden Transaktionsverlauf einsehen @@ -1194,7 +1195,7 @@ Jährlicher prozentualer Ertrag APY zeigt den jährlichen prozentualen Ertrag des Validators basierend auf seiner Leistung Effektiver Jahreszins - Effektiver Jahreszins + APY Belohnungen sammeln sich täglich automatisch in deinem Staking-Konto an. Verfügbar Durchschnittliche Belohnungsquote @@ -1384,12 +1385,14 @@ Google Wallet öffnen Richte Tangem Pay mit wenigen Klicks ein und bezahlen mit Google Pay. Karte zu Google Pay hinzufügen + Karte zu Apple Pay hinzufügen Google Wallet öffnen Tippe auf „Karte hinzufügen“. Gebe die Kartendaten manuell ein Verifiziere die Karte mit dem Einmalpasswort (OPT), das an Dein Gerät gesendet wird. Alles erledigt! Deine Karte ist einsatzbereit. Karte zu Google Pay hinzufügen + Karte zu Apple Pay hinzufügen Teile Deine Adresse mit oder zeig den QR-Code. Es wurden technische Probleme festgestellt. Bitte versuche es später erneut oder kontaktiere den Support. Empfangen ist jetzt nicht verfügbar diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index a84c13660c..1a1ad0aad3 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -182,6 +182,7 @@ Activar Activado Error + Comisión de red por recarga Intercambiar Explore Explore historial de transacciones diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 4d0bd4f6aa..1da9dfb319 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -160,6 +160,7 @@ Activer Activé Erreur + Frais estimés Echanger Explorez Explorez l\'historique des transactions diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 77b2d58b3b..9a4215ccc4 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -253,6 +253,7 @@ 有効にする 有効 エラー + ネットワーク手数料 スワップ 移動する 取引履歴を調べる @@ -268,7 +269,7 @@ 無料 送信元 アドレスを同期する - はじめる + もっと詳しく トークンを取得 プロバイダーへ移動 トークンへ移動 @@ -369,6 +370,7 @@ 利用可能なネットワーク このトークンの導出パスが%1$sの導出パスと一致しています。トークンはこのアカウントに追加されます。 導出パスは別のアカウントに属します。 + トークンが%1$sアカウントに追加されました コントラクトアドレス コントラクトアドレスが無効です ネットワークを選択してください @@ -564,10 +566,12 @@ 現在のウォレットをアップグレードする バックアップへ移動 アクセスコードを作成する前にウォレットをバックアップしてください。 + まずバックアップを完了する まずバックアップを完了する その他の方法 秘密鍵をオフラインで安全に保存する物理デバイス。 リカバリーフレーズ + アクセスコードを使用してウォレットを保護するには、まずバックアップを完了してください。 ウォレットをハードウェアにアップグレードするには、まずバックアップしてください。 鍵はアプリに保存されます シードフレーズのバックアップ @@ -1333,6 +1337,7 @@ 受け取る トークンを選択 利用不可 + カードが凍結されています 入金 異議申し立て 取引を表示 @@ -1340,15 +1345,20 @@ 手数料 カードを紛失したり盗まれたりしても、資金を安全に保てます。一時停止はいつでも解除できます。 カードを一時停止しますか? + カードを凍結できませんでした。しばらくしてからもう一度お試しください。 一時停止 + カードが凍結されています サポートを受ける 完了 拒否 保留中 + 利用規約・手数料・利用制限 銀行がこの取引リクエストを拒否しました。 この手数料は、送金処理にかかるコストをカバーするためのものです。 資金は引き続き使用できます。いつでも一時停止できます。 カードの一時停止を解除しますか? + カードの凍結解除に失敗しました。しばらくしてからもう一度お試しください。 + カードの凍結が解除されました 出金 資金を追加 入金オプション @@ -1361,12 +1371,14 @@ Googleウォレットを開く 数回タップするだけでTangem Payの設定完了。Google Payですぐに支払いを始めましょう。 Google Payにカードを追加する + Apple Payにカードを追加する Googleウォレットを開く 「カードを追加」をタップします カードの詳細を手動で入力してください お使いの端末に送信されたワンタイムパスワード(OTP)でカードを認証してください。 準備完了!カードはすぐに使用できます。 Google Payにカードを追加する + Apple Payにカードを追加する アドレスを共有するか、QRコードを表示してください。 技術的な問題が検出されました。しばらくしてからもう一度お試しいただくか、サポートにお問い合わせください。 現在、受け取りは利用できません @@ -1379,12 +1391,12 @@ ステータスを表示 Tangem PayのKYC手続き進行中 カードをGET - ウォレットに追加して、どこでもスマートフォンで支払いができます。 - Apple Pay & Google Pay - USDC残高を使用して、毎日のお買い物をシームレスに支払います。 - 日常の買い物 - カードの詳細は保護されており、アプリ内で完全に制御できます。 - 内蔵セキュリティ + どこでも暗号資産を使える + Apple PayとGoogle Payに対応したデジタルカード付き + 購入時に追加手数料はかかりません。 + 余計な費用なしで、表示金額のみを支払う + あなたの住所や資産を開示することなく、個別の支払い用アカウントが作成されます。 + 他に類を見ないプライバシー 無料のCryptoカード\nを数分で入手しましょう Tangem Pay これは私のウォレットです @@ -1800,7 +1812,7 @@ 利息モードを有効にすると、このアドレスへの今後のすべての入金はAaveに送られます。ただし、資金の管理は引き続き自由に行えます。 %sはAaveに供給されています Aaveへの%1$s %2$sの供給は保留中です - 承認する + 承認 トークンの承認は取り消されました。サービス機能を再開するには、再度承認を行ってください。 承認が必要 手数料が差し引かれ、あなたの資産は再び貸し出されます。 @@ -1829,7 +1841,7 @@ 最大手数料 最小金額は、ネットワーク手数料がチャージ額の4%を超えないように現在の手数料に基づいて計算されます。その結果、最小金額は%1$s(%2$s)となります。 最低入金額 - 手数料ポリシー + 入金手数料ポリシー Tangemはまた、得られた利回りに対して15%のサービス手数料を差し引きます。 ネットワーク手数料が下がるか、残高が最低必要額に達すると、資金は自動的にAaveに供給されます。 過去のリターン @@ -1856,7 +1868,7 @@ 入金すると、資金は自動的にAaveに送金され、利息が付き始めます。%sが取引手数料として差し引かれます。 資産を供給する %sはAaveに供給されますが、管理可能な状態のままになります。 - 手数料ポリシーを見る + 入金手数料ポリシーを見る 次回の入金は自動的にAaveに供給されます。 アクティブ 停止中 diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index a4f1af4013..1df2916b57 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -186,6 +186,7 @@ Включить Включено Ошибка + Комиссия сети Обменять Обозреватель Посмотреть историю транзакций @@ -1615,7 +1616,7 @@ Максимальная комиссия Минимальная сумма рассчитывается исходя из текущей комиссии сети, чтобы она не превышала 4%% от суммы пополнения, что составляет минимум %1$s (%2$s). Минимальный депозит - Политика комиссий + Политика комиссий за пополнение Tangem взимает комиссию за обслуживание в размере 15% от полученного дохода. Ваши средства будут автоматически переведены в Aave, как только комиссия сети снизится или баланс достигнет минимально необходимой суммы. Историческая доходность diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index eb74113ec1..35f9ffc00b 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -160,6 +160,7 @@ Увімкнути Увімкнено Помилка + Комісія мережі за поповнення Обміняти Оглядач Переглянути історію транзакцій diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 9c03a1494f..11fdaf6304 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -258,7 +258,7 @@ Enable Enabled Error - Estimated fee + Top-up network fee Swap Explore Explore transaction history @@ -274,7 +274,7 @@ Free From Synchronize addresses - Learn more + Get started Get token Go to provider Go to token @@ -378,6 +378,7 @@ Available networks Derivation of your token matches the derivation of %1$s. Your token will be added to this account. Derivation belongs to another account. + Token added to %1$s account Contract address Contract address is invalid Please select the network @@ -1360,6 +1361,7 @@ Choose token not available Card frozen + Card payment Deposit Dispute Explore transaction @@ -1371,9 +1373,11 @@ Freeze Your card is frozen. Get Help + Other Completed Declined Pending + Terms, Fees & Limits The bank rejected this transaction request. This fee goes to cover the cost of handling your transfer. Keep using your money. You can freeze anytime. @@ -1383,25 +1387,36 @@ Withdrawal Add funds Top-up options + Card Number Change PIN The card is fully ready for payments. PIN code created + CVC Failed to load data. Try again later. + Expiry Freeze Card + Hide details Hide Open Google Wallet Set up Tangem Pay in a few taps and start paying with Google Pay. Add your card to Google Pay + Add your card to Apple Pay Open Google Wallet + Tap “+” button on the top right + Open + Apple Wallet Tap “Add a card” + Tap “Debit or Credit Card” Enter the card details manually Verify card using the OTP sent to your device. All set! Your card is ready to use. Add card to Google Pay + Add card to Apple Pay Share your address or show QR-code Technical issues detected. Please try again later or contact support. Receive unavailable now Reveal + Show details Swap any asset in your portfolio for card Card details Unfreeze Card @@ -1410,13 +1425,15 @@ View Status KYC in progress for Tangem Pay Get card - Add to your wallet and pay with your phone anywhere. - Apple Pay & Google Pay - Use your USDC balance to pay for everyday purchases seamlessly. - Everyday purchases - Your card details are protected — full control in the app. - Built-in security + Spend your crypto anywhere + With digital card that works with Apple Pay and Google Pay + There are no additional fees for purchases + Pay exactly what you see + A separate payment account will be created without disclosing your addresses and assets + Unrivaled privacy Get your free Crypto Card\nin minutes + We’re fixing a technical issue. Please try again later. + Service temporarily unavailable Tangem Pay This is my wallet Balances hidden @@ -1880,7 +1897,7 @@ With Yield mode active, all future deposits to this address will go to Aave. You can still manage your funds freely. Your %s is supplied to Aave Supplying %1$s %2$s to Aave is pending - Give Approve + Approve Your token’s approval has been revoked. Grant it again to resume service functionality. Approve needed The fee will be taken out, and your assets will be lent again. @@ -1909,7 +1926,7 @@ Maximum fee The minimum amount is calculated based on the current network fee so that it does not exceed 4%% of the top-up amount, which makes the minimum %1$s (%2$s). Minimum top-up - Fee policy + Top-up fee policy Tangem also takes a 15% service fee on yield earned. Your funds will be automatically supplied to Aave once network fees are lower or your balance meets the minimum required amount. Historical returns @@ -1950,7 +1967,7 @@ Interest accrues automatically. Interest accrues automatically Yield mode - Processing your deposit + Processing your top-up Yield Mode Automatic Deposit some %1$s %2$s to cover the network fee for transactions diff --git a/data/yield-supply/src/main/java/com/tangem/data/yield/supply/DefaultYieldSupplyRepository.kt b/data/yield-supply/src/main/java/com/tangem/data/yield/supply/DefaultYieldSupplyRepository.kt index 48badf6ec8..75f2634213 100644 --- a/data/yield-supply/src/main/java/com/tangem/data/yield/supply/DefaultYieldSupplyRepository.kt +++ b/data/yield-supply/src/main/java/com/tangem/data/yield/supply/DefaultYieldSupplyRepository.kt @@ -24,6 +24,7 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext +import timber.log.Timber import java.util.concurrent.ConcurrentHashMap internal class DefaultYieldSupplyRepository( @@ -138,7 +139,7 @@ internal class DefaultYieldSupplyRepository( override suspend fun getTokenPendingStatus( userWalletId: UserWalletId, cryptoCurrencyStatus: CryptoCurrencyStatus, - ): YieldSupplyEnterStatus? { + ): YieldSupplyEnterStatus? = try { val cryptoCurrency = cryptoCurrencyStatus.currency val walletManager = walletManagersFacade.getOrCreateWalletManager( userWalletId = userWalletId, @@ -152,11 +153,14 @@ internal class DefaultYieldSupplyRepository( val hasRecentYieldEnterTxs = pendingTxs.hasYieldEnterTransactions(yieldAddress) val hasRecentYieldExitTxs = pendingTxs.hasYieldExitTransactions() - return when { + when { hasRecentYieldEnterTxs -> YieldSupplyEnterStatus.Enter hasRecentYieldExitTxs -> YieldSupplyEnterStatus.Exit else -> null } + } catch (e: Exception) { + Timber.e(e, "Failed to get pending yield supply status") + null } private fun Set.hasYieldEnterTransactions(yieldAddress: String) = any { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt index 108d706b1d..e21b971fe1 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt @@ -36,7 +36,6 @@ import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.account.AccountDependencies import com.tangem.feature.wallet.presentation.wallet.state.model.WalletNotification -import com.tangem.features.yield.supply.api.YieldSupplyFeatureToggles import com.tangem.lib.crypto.BlockchainUtils.isBitcoin import com.tangem.utils.extensions.addIf import com.tangem.utils.extensions.isPositive @@ -62,7 +61,6 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( private val onrampSepaAvailableUseCase: OnrampSepaAvailableUseCase, private val getOnrampCountryUseCase: GetOnrampCountryUseCase, private val notificationsRepository: NotificationsRepository, - private val yieldSupplyFeatureToggles: YieldSupplyFeatureToggles, private val accountDependencies: AccountDependencies, ) { @@ -134,7 +132,8 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( !notificationsRepository.isUserAllowToSubscribeOnPushNotifications(), ) - addYieldSupplyNotifications(flattenCurrencies) + // Remove in first iteration of yield supply feature + // addYieldSupplyNotifications(flattenCurrencies) val hasCriticalOrWarning = any { notification -> notification is WalletNotification.Critical || notification is WalletNotification.Warning @@ -319,14 +318,14 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( ) } - private fun MutableList.addYieldSupplyNotifications( - flattenCurrencies: Lce>, - ) { - addIf( - element = WalletNotification.Warning.YeildSupplyApprove, - condition = flattenCurrencies.hasTokensWithActivatedSupplyWithoutApprove(), - ) - } + // private fun MutableList.addYieldSupplyNotifications( + // flattenCurrencies: Lce>, + // ) { + // addIf( + // element = WalletNotification.Warning.YeildSupplyApprove, + // condition = flattenCurrencies.hasTokensWithActivatedSupplyWithoutApprove(), + // ) + // } private fun MutableList.addWarningNotifications( cardTypesResolver: CardTypesResolver?, @@ -371,13 +370,14 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( return flattenCurrencies.any { it.value is CryptoCurrencyStatus.Unreachable } } - private fun Lce>.hasTokensWithActivatedSupplyWithoutApprove(): Boolean { - val flattenCurrencies = getOrNull(isPartialContentAccepted = false) ?: return false - val yieldSupplyEnabled = yieldSupplyFeatureToggles.isYieldSupplyFeatureEnabled - return yieldSupplyEnabled && flattenCurrencies.any { - it.value.yieldSupplyStatus?.isAllowedToSpend == false - } - } + // Remove in first iteration of yield supply feature + // private fun Lce>.hasTokensWithActivatedSupplyWithoutApprove(): Boolean { + // val flattenCurrencies = getOrNull(isPartialContentAccepted = false) ?: return false + // val yieldSupplyEnabled = yieldSupplyFeatureToggles.isYieldSupplyFeatureEnabled + // return yieldSupplyEnabled && flattenCurrencies.any { + // it.value.yieldSupplyStatus?.isAllowedToSpend == false + // } + // } private fun MutableList.addRateTheAppNotification( isReadyToShowRating: Boolean, diff --git a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt index d83e344df8..f73b643b1b 100644 --- a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt +++ b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/model/YieldSupplyModel.kt @@ -72,6 +72,7 @@ internal class YieldSupplyModel @Inject constructor( val bottomSheetNavigation: SlotNavigation = SlotNavigation() + private val handleNavigation = params.handleNavigation private val cryptoCurrency = params.cryptoCurrency var userWallet: UserWallet by Delegates.notNull() @@ -91,8 +92,13 @@ internal class YieldSupplyModel @Inject constructor( init { checkIfYieldSupplyIsAvailable() - params.handleNavigation?.let { handle -> - if (handle) { + + val protocolStatus = yieldSupplyRepository.getTokenProtocolStatus( + userWalletId = params.userWalletId, + cryptoCurrency = cryptoCurrency, + ) + if (handleNavigation != null && protocolStatus == null) { + if (handleNavigation) { modelScope.launch { delay(timeMillis = 1000) bottomSheetNavigation.activate(Unit) diff --git a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/ui/YieldSupplyBlockContent.kt b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/ui/YieldSupplyBlockContent.kt index d4414727ef..df2c84d279 100644 --- a/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/ui/YieldSupplyBlockContent.kt +++ b/features/yield-supply/impl/src/main/java/com/tangem/features/yield/supply/impl/main/ui/YieldSupplyBlockContent.kt @@ -71,7 +71,7 @@ private fun SupplyAvailable(supplyUM: YieldSupplyUM.Available, modifier: Modifie modifier = modifier, button = { SecondaryButton( - text = stringResourceSafe(R.string.common_get_started), + text = stringResourceSafe(R.string.common_learn_more), onClick = supplyUM.onClick, size = TangemButtonSize.WideAction, modifier = Modifier.fillMaxWidth(),