Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-04 14:13:00 +03:00
parent 6d3dc33fb6
commit 022c4bcfcd
11 changed files with 82 additions and 21 deletions

View file

@ -313,11 +313,11 @@ sealed class NotificationUM(val config: NotificationConfig) {
data class RentInfo(
private val rentInfo: CryptoCurrencyWarning.Rent,
) : Info(
title = TextReference.Res(R.string.warning_rent_fee_title),
) : Error(
title = TextReference.Res(R.string.send_notification_invalid_amount_title),
subtitle = TextReference.Res(
id = R.string.warning_solana_rent_fee_message,
formatArgs = wrappedList(rentInfo.rent, rentInfo.exemptionAmount),
id = R.string.send_notification_invalid_amount_rent_fee,
formatArgs = wrappedList(rentInfo.exemptionAmount),
),
)
}

View file

@ -345,6 +345,11 @@ object NotificationsFactory {
}
}
fun MutableList<NotificationUM>.addRentExemptionNotification(rentWarning: CryptoCurrencyWarning.Rent?) {
if (rentWarning == null) return
add(NotificationUM.Solana.RentInfo(rentWarning))
}
private fun checkDustLimits(
feeAmount: BigDecimal,
receivedAmount: BigDecimal,

View file

@ -568,7 +568,7 @@
<string name="onboarding_wallet_info_title_second">Identische Karten oder Ring</string>
<string name="onboarding_wallet_info_title_third">Zugangscode</string>
<string name="onramp_avaiable_with_payment_methods">Verfügbar mit %s</string>
<string name="onramp_choose_provider_title_hint">Anbieter erleichtern Transaktionen und sorgen für einen reibungslosen und effizienten Token-Austausch</string>
<string name="onramp_choose_provider_title_hint">Der Kauf von Kryptowährungen bei Tangem wird von Drittanbietern zu deren Bedingungen durchgeführt.</string>
<string name="onramp_country_search">Suche nach Land</string>
<string name="onramp_country_unavailable">Nicht verfügbar</string>
<string name="onramp_currency_search">Suche nach Währung</string>
@ -585,7 +585,8 @@
<string name="onramp_settings_residence">Residenz</string>
<string name="onramp_settings_residence_description">Bitte wähle das richtige Land aus, um korrekte Zahlungsoptionen und Dienstleistungen zu gewährleisten.</string>
<string name="onramp_settings_title">Einstellungen</string>
<string name="onramp_transaction_status_footer_text">Du kannst den Transaktionsstatus auf der Token-Seite überprüfen.</string>
<string name="onramp_statuses_view_footer">Du kannst den Transaktionsstatus auf der Token-Seite überprüfen.</string>
<string name="onramp_transaction_status_footer_text">Du kannst diesen Bildschirm schließen und den Transaktionsstatus auf dem Bildschirm mit den Token-Details überprüfen.</string>
<string name="onramp_via">Über</string>
<string name="organize_tokens_group">Gruppe erstellen</string>
<string name="organize_tokens_sort_by_balance">Nach Guthaben</string>
@ -599,7 +600,6 @@
<string name="receive_bottom_sheet_warning_message">%1$s ( %2$s ) im %3$s Netzwerk</string>
<string name="receive_bottom_sheet_warning_message_description">Das Senden einer anderen Währung führt zu deren irreversiblem Verlust.</string>
<string name="receive_bottom_sheet_warning_message_full">Sende nur %s an diese Adresse. Der Versand einer anderen Währung führt zu ihrem unwiderruflichen Verlust.</string>
<string name="receive_bottom_sheet_warning_message_title">Sende nur %s an diese Adresse.</string>
<string name="receive_token_description">Überweise Geld von einem anderen Wallet oder einer anderen Börse</string>
<string name="referral_button_participate">Teilnehmen</string>
<string name="referral_error_failed_to_load_info">Die Informationen zum Empfehlungsprogramm konnten nicht geladen werden. Bitte versuche es später noch einmal.</string>
@ -695,6 +695,7 @@
<string name="send_notification_fee_too_high_title">Die individuelle Gebühr ist hoch</string>
<string name="send_notification_high_fee_text">Aufgrund der Besonderheiten des Netzes %1$s ist die Gebühr für die Überweisung des gesamten Guthabens höher. Um die Kommission zu reduzieren, Kannst du %2$s verlassen.</string>
<string name="send_notification_high_fee_title">Die Gebühr ist höher</string>
<string name="send_notification_invalid_amount_rent_fee">Dein Kontostand darf nicht niedriger sein als die Miete. Bitte halte mindestens %1$s auf Deinem Konto oder ziehe den gesamten Betrag ab.</string>
<string name="send_notification_invalid_amount_text">Die enthaltene Kommission übersteigt den Überweisungsbetrag, was zu einem negativen Wert führt</string>
<string name="send_notification_invalid_amount_title">Ungültige Menge</string>
<string name="send_notification_invalid_minimum_amount_text">Der Mindestbetrag für den Versand beträgt %1$s. Bitte stell sicher, dass der Restbetrag nach dem Versand nicht unter %2$s liegt.</string>

View file

@ -252,6 +252,7 @@
<string name="express_choose_providers_subtitle">Tangem ofrece swaps de tokens a través de proveedores externos según los términos de cada proveedor</string>
<string name="express_choose_providers_title">Elige un proveedor</string>
<string name="express_error_code">Ha ocurrido un error. Código: %s</string>
<string name="express_error_provider_amount_roundup">Error %1$s. El proveedor seleccionado no puede procesar la transacción especificada. Por favor, redondee el valor a %2$s o cámbielo</string>
<string name="express_error_swap_pair_unavailable">El proveedor seleccionado no está disponible actualmente. Inténtelo de nuevo más tarde. (Código: %s)</string>
<string name="express_error_swap_unavailable">Los cambios no están disponibles en este momento. Inténtelo de nuevo más tarde. (Código: %s)</string>
<string name="express_estimated_amount">Cantidad estimada</string>
@ -566,6 +567,7 @@
<string name="onboarding_wallet_info_title_fourth">Restaurar código de acceso</string>
<string name="onboarding_wallet_info_title_second">Tarjetas idénticas</string>
<string name="onboarding_wallet_info_title_third">Código de acceso</string>
<string name="onramp_avaiable_with_payment_methods">Disponible con %s</string>
<string name="onramp_country_search">Buscar por país</string>
<string name="onramp_country_unavailable">Indisponible</string>
<string name="onramp_currency_search">Buscar por moneda</string>
@ -582,6 +584,7 @@
<string name="onramp_settings_residence">Residencia</string>
<string name="onramp_settings_residence_description">Seleccione el país correcto para garantizar opciones de pago y servicios precisos.</string>
<string name="onramp_settings_title">Ajustes</string>
<string name="onramp_statuses_view_footer">Puede comprobar el estado de la transacción desde la página del token.</string>
<string name="onramp_transaction_status_footer_text">Puede comprobar el estado de la transacción desde la página del token</string>
<string name="onramp_via">Vía</string>
<string name="organize_tokens_group">Agrupar</string>
@ -592,7 +595,9 @@
<string name="qr_scanner_camera_denied_settings_button">Ajustes</string>
<string name="qr_scanner_camera_denied_text">No ha dado acceso a su cámara</string>
<string name="qr_scanner_camera_denied_title">Acceso a la cámara denegado</string>
<string name="receive_bottom_sheet_no_memo_required_message">No se requiere nota</string>
<string name="receive_bottom_sheet_warning_message">%1$s (%2$s) en la red %3$s</string>
<string name="receive_bottom_sheet_warning_message_description">El envío de cualquier otra moneda supondrá una pérdida irreversible.</string>
<string name="receive_bottom_sheet_warning_message_full">Envíe solo %s a esta dirección. Enviar cualquier otra moneda resultará en su pérdida irreversible.</string>
<string name="receive_token_description">Transfiera fondos desde otra billetera o intercambio</string>
<string name="referral_button_participate">Participar</string>

View file

@ -252,6 +252,7 @@
<string name="express_choose_providers_subtitle">Tangem propose des échanges de jetons via des fournisseurs tiers selon les conditions de chaque fournisseur</string>
<string name="express_choose_providers_title">Choisissez un fournisseur</string>
<string name="express_error_code">Une erreur s\'est produite. Code : %s</string>
<string name="express_error_provider_amount_roundup">Erreur %1$s. Le fournisseur sélectionné ne peut pas traiter la transaction spécifiée. Veuillez arrondir la valeur à %2$s ou la modifier</string>
<string name="express_error_swap_pair_unavailable">Le fournisseur sélectionné n\'est pas disponible pour le moment. Veuillez réessayer plus tard. (Code : %s)</string>
<string name="express_error_swap_unavailable">Les échanges ne sont pas disponibles pour le moment. Veuillez réessayer plus tard. (Code : %s)</string>
<string name="express_estimated_amount">Montant estimé</string>
@ -566,6 +567,7 @@
<string name="onboarding_wallet_info_title_fourth">Restauration du code d\'accès</string>
<string name="onboarding_wallet_info_title_second">Cartes identiques</string>
<string name="onboarding_wallet_info_title_third">Code d\'accès</string>
<string name="onramp_avaiable_with_payment_methods">Disponible avec %s</string>
<string name="onramp_country_search">Recherche par pays</string>
<string name="onramp_country_unavailable">Indisponible</string>
<string name="onramp_currency_search">Recherche par devise</string>
@ -582,6 +584,7 @@
<string name="onramp_settings_residence">Résidence</string>
<string name="onramp_settings_residence_description">Veuillez sélectionner le bon pays pour garantir des options de paiement et des services précis.</string>
<string name="onramp_settings_title">Paramètres</string>
<string name="onramp_statuses_view_footer">Vous pouvez vérifier l\'état de la transaction à partir de la page du jeton.</string>
<string name="onramp_transaction_status_footer_text">Vous pouvez vérifier l\'état de la transaction à partir de la page du jeton</string>
<string name="onramp_via">Via</string>
<string name="organize_tokens_group">Grouper</string>
@ -592,7 +595,9 @@
<string name="qr_scanner_camera_denied_settings_button">Paramètres</string>
<string name="qr_scanner_camera_denied_text">Vous n\'avez pas donné accès à votre caméra</string>
<string name="qr_scanner_camera_denied_title">Accès à la caméra refusé</string>
<string name="receive_bottom_sheet_no_memo_required_message">Aucun mémo requis</string>
<string name="receive_bottom_sheet_warning_message">%1$s (%2$s) sur le réseau %3$s</string>
<string name="receive_bottom_sheet_warning_message_description">Lenvoi de toute autre devise entraînera sa perte irréversible.</string>
<string name="receive_bottom_sheet_warning_message_full">Envoyez uniquement %s à cette adresse. L\'envoi de toute autre devise entraînera sa perte irréversible.</string>
<string name="receive_token_description">Transférez des fonds depuis un autre portefeuille ou une autre bourse</string>
<string name="referral_button_participate">Participer</string>

View file

@ -3,10 +3,17 @@
<string name="action_buttons_buy_empty_search_message">トークンが見つかりませんか?メインページのマーケットセクションに移動し、ポートフォリオに追加して買付できるようにします。</string>
<string name="action_buttons_sell_empty_search_message">トークンが見つかりませんか?メインページのマーケットセクションに移動し、ポートフォリオに追加して売却できるようにします。</string>
<string name="action_buttons_sell_navigation_bar_title">売却</string>
<string name="action_buttons_service_loading_alert_message">接続には数秒かかる場合があります。しばらくお待ちください。</string>
<string name="action_buttons_service_loading_alert_title">接続</string>
<string name="action_buttons_something_wrong_alert_message">この操作は現在利用できません。しばらくしてからもう一度お試しいただくか、画面を下にスワイプしてデータを更新してください。</string>
<string name="action_buttons_swap_choose_token">トークンを選択</string>
<string name="action_buttons_swap_empty_search_message">トークンが見つかりませんか?メインページのマーケットセクションに移動し、ポートフォリオに追加してスワップできるようにします。</string>
<string name="action_buttons_swap_no_available_pair_notification_message">選択したトークンと交換できるトークンがありません。別のトークンを選択してください。</string>
<string name="action_buttons_swap_no_available_pair_notification_title">利用可能なペアがありません</string>
<string name="action_buttons_swap_no_tokens_added_alert_message">交換機能を使用するには、ポートフォリオに少なくとも2つのトークンが含まれている必要があります。</string>
<string name="action_buttons_swap_no_tokens_added_alert_title">トークンの追加</string>
<string name="action_buttons_swap_not_enough_tokens_alert_message">ポートフォリオに追加されているトークンは1つだけです。交換機能を使用するには、少なくとも2つのトークンを追加する必要があります。</string>
<string name="action_buttons_swap_not_enough_tokens_alert_title">トークンの追加</string>
<string name="action_buttons_you_want_to_receive">受け取りたいトークンを選択します</string>
<string name="action_buttons_you_want_to_swap">スワップしたいトークンを選択します</string>
<string name="add_custom_token_choose_network">ネットワークを選択</string>
@ -260,6 +267,9 @@
<string name="express_exchange_notification_refund_title">金額は %1$s%2$sネットワークで返金されました</string>
<string name="express_exchange_notification_verification_text">確認するには、プロバイダーのウェブサイトにアクセスしてください。</string>
<string name="express_exchange_notification_verification_title">プロバイダーによる本人確認手続きが必要です。</string>
<string name="express_exchange_status_bought">買付完了</string>
<string name="express_exchange_status_buying">買付中</string>
<string name="express_exchange_status_buying_active">買付中...</string>
<string name="express_exchange_status_canceled">キャンセルされました</string>
<string name="express_exchange_status_confirmed">確認済み</string>
<string name="express_exchange_status_confirming">確認中</string>
@ -560,7 +570,7 @@
<string name="onboarding_wallet_info_title_second">同一のカード</string>
<string name="onboarding_wallet_info_title_third">アクセスコード</string>
<string name="onramp_avaiable_with_payment_methods">%sで利用可能</string>
<string name="onramp_choose_provider_title_hint">プロバイダーは取引を促進し、スムーズで効率的なトークン交換を保証します</string>
<string name="onramp_choose_provider_title_hint">Tangemでの暗号通貨の買付は、サードパーティプロバイダーの条件に基づいて行われます。</string>
<string name="onramp_country_search">国で検索</string>
<string name="onramp_country_unavailable">利用不可</string>
<string name="onramp_currency_search">通貨で検索</string>
@ -577,7 +587,8 @@
<string name="onramp_settings_residence">住居</string>
<string name="onramp_settings_residence_description">正確なお支払い方法とサービスを確保するため、正しい国を選択してください。</string>
<string name="onramp_settings_title">設定</string>
<string name="onramp_transaction_status_footer_text">トークンページから取引状況を確認できます</string>
<string name="onramp_statuses_view_footer">トークンページから取引状況を確認できます。</string>
<string name="onramp_transaction_status_footer_text">この画面を閉じて、トークンの詳細画面で取引状況を確認できます。</string>
<string name="onramp_via">経由</string>
<string name="organize_tokens_group">グループ</string>
<string name="organize_tokens_sort_by_balance">残高順</string>
@ -591,7 +602,7 @@
<string name="receive_bottom_sheet_warning_message">%3$sネットワーク上の%1$s ( %2$s )</string>
<string name="receive_bottom_sheet_warning_message_description">他の暗号資産を送信すると、取り返しのつかない損失が発生します。</string>
<string name="receive_bottom_sheet_warning_message_full">このアドレスには%sのみを送金してください。他のトークンを送信すると、取り返しのつかない損失が発生します。</string>
<string name="receive_bottom_sheet_warning_message_title">このアドレスには%sのみを送信してください。</string>
<string name="receive_bottom_sheet_warning_title">%2$sネットワークの%1$sのみを送信してください</string>
<string name="receive_token_description">ウォレットや取引所から資金を送金する</string>
<string name="referral_button_participate">参加する</string>
<string name="referral_error_failed_to_load_info">紹介プログラムに関する情報を読み込めませんでした。しばらくしてからもう一度お試しください。</string>
@ -685,6 +696,7 @@
<string name="send_notification_fee_too_high_title">カスタム手数料が高くなっています</string>
<string name="send_notification_high_fee_text">%1$sネットワークの特殊性により、残高全体を転送する場合の手数料は高くなります。手数料を削減するには、 %2$sを残します。</string>
<string name="send_notification_high_fee_title">手数料が高くなっています</string>
<string name="send_notification_invalid_amount_rent_fee">口座残高はレンタル料金より低くすることはできません。残高を少なくとも%1$sに維持するか、すべての資金を引き出してください。</string>
<string name="send_notification_invalid_amount_text">手数料が送金金額を超えており、マイナスの値になってしまいます。</string>
<string name="send_notification_invalid_amount_title">無効な金額</string>
<string name="send_notification_invalid_minimum_amount_text">最低送金金額は%1$sです。送金後の残高が%2$s未満にならないようにしてください。</string>

View file

@ -13,6 +13,8 @@
<string name="action_buttons_swap_no_available_pair_notification_title">Нет доступных пар</string>
<string name="action_buttons_swap_no_tokens_added_alert_message">Для использования функции обмена ваш портфель должен содержать минимум 2 токена.</string>
<string name="action_buttons_swap_no_tokens_added_alert_title">Добавьте токены</string>
<string name="action_buttons_swap_not_enough_tokens_alert_message">У вас добавлен всего 1 токен. Для использования функции обмена необходимо добавить минимум 2 токена.</string>
<string name="action_buttons_swap_not_enough_tokens_alert_title">Добавьте токены</string>
<string name="action_buttons_you_want_to_receive">Выберите токен для получения</string>
<string name="action_buttons_you_want_to_swap">Выберите токен для обмена</string>
<string name="add_custom_token_choose_network">Выберите сеть</string>
@ -188,7 +190,7 @@
<string name="common_submit">Отправить</string>
<string name="common_success">Успешно</string>
<string name="common_support">Поддержка</string>
<string name="common_swap">Обмен</string>
<string name="common_swap">Обменять</string>
<string name="common_terms_and_conditions">условия участия</string>
<string name="common_terms_of_use">Условиями использования</string>
<string name="common_today">Сегодня</string>
@ -275,6 +277,9 @@
<string name="express_exchange_notification_refund_title">Сумма была возвращена в %1$s (%2$s сети)</string>
<string name="express_exchange_notification_verification_text">Посетите сайт провайдера для проверки</string>
<string name="express_exchange_notification_verification_title">Провайдер запрашивает прохождение верификации</string>
<string name="express_exchange_status_bought">Куплено</string>
<string name="express_exchange_status_buying">Покупка</string>
<string name="express_exchange_status_buying_active">Покупка...</string>
<string name="express_exchange_status_canceled">Отменен</string>
<string name="express_exchange_status_confirmed">Подтверждено</string>
<string name="express_exchange_status_confirming">Подтверждение</string>
@ -605,6 +610,7 @@
<string name="onramp_settings_residence">Страна проживания</string>
<string name="onramp_settings_residence_description">Пожалуйста, укажите правильную страну, чтобы обеспечить точность доступных способов оплаты и услуг.</string>
<string name="onramp_settings_title">Настройки</string>
<string name="onramp_statuses_view_footer">You can close this screen and check the transaction status on the token details screen.</string>
<string name="onramp_transaction_status_footer_text">Вы можете закрыть этот экран и проверить статус транзакции на экране информации о токене.</string>
<string name="onramp_via">Через</string>
<string name="organize_tokens_group">Группы</string>
@ -619,7 +625,7 @@
<string name="receive_bottom_sheet_warning_message">%1$s (%2$s) в сети %3$s</string>
<string name="receive_bottom_sheet_warning_message_description">Использование другой сети может привести к утрате средств.</string>
<string name="receive_bottom_sheet_warning_message_full">Отправляйте только %s на этот адрес. Использование другой сети может привести к утрате средств.</string>
<string name="receive_bottom_sheet_warning_message_title">Отправляйте только %s на этот адрес</string>
<string name="receive_bottom_sheet_warning_title">Отправляйте только %1$s в сети %2$s </string>
<string name="receive_token_description">Переводите средства с любого кошелька или биржи</string>
<string name="referral_button_participate">Участвовать</string>
<string name="referral_error_failed_to_load_info">Не удалось загрузить информацию по реферальной программе. Пожалуйста, попробуйте позже.</string>

View file

@ -13,6 +13,8 @@
<string name="action_buttons_swap_no_available_pair_notification_title">No available pair</string>
<string name="action_buttons_swap_no_tokens_added_alert_message">To use the exchange feature, your portfolio must contain at least 2 tokens.</string>
<string name="action_buttons_swap_no_tokens_added_alert_title">Add tokens</string>
<string name="action_buttons_swap_not_enough_tokens_alert_message">You only have 1 token added to your portfolio. To use the exchange feature, you need to add at least 2 tokens.</string>
<string name="action_buttons_swap_not_enough_tokens_alert_title">Add tokens</string>
<string name="action_buttons_you_want_to_receive">Choose the token you want to receive</string>
<string name="action_buttons_you_want_to_swap">Choose the token you want to swap</string>
<string name="add_custom_token_choose_network">Choose network</string>
@ -269,6 +271,9 @@
<string name="express_exchange_notification_refund_title">The amount was refunded in %1$s (%2$s network)</string>
<string name="express_exchange_notification_verification_text">Visit providers website for verification</string>
<string name="express_exchange_notification_verification_title">KYC verification required by provider</string>
<string name="express_exchange_status_bought">Bought</string>
<string name="express_exchange_status_buying">Buying</string>
<string name="express_exchange_status_buying_active">Buying...</string>
<string name="express_exchange_status_canceled">Canceled</string>
<string name="express_exchange_status_confirmed">Confirmed</string>
<string name="express_exchange_status_confirming">Confirming</string>
@ -591,7 +596,7 @@
<string name="onramp_settings_residence">Residence</string>
<string name="onramp_settings_residence_description">Please select the correct country to ensure accurate payment options and services.</string>
<string name="onramp_settings_title">Settings</string>
<string name="onramp_statuses_view_footer">You can check the transaction status from the token page.</string>
<string name="onramp_statuses_view_footer">You can close this screen and check the transaction status on the token details screen.</string>
<string name="onramp_transaction_status_footer_text">You can close this screen and check the transaction status on the token details screen.</string>
<string name="onramp_via">Via</string>
<string name="organize_tokens_group">Group</string>
@ -606,7 +611,7 @@
<string name="receive_bottom_sheet_warning_message">%1$s (%2$s) on %3$s network</string>
<string name="receive_bottom_sheet_warning_message_description">Sending any other currency will result in its irreversible loss.</string>
<string name="receive_bottom_sheet_warning_message_full">Send only %s to this address. Sending any other currency will result in its irreversible loss.</string>
<string name="receive_bottom_sheet_warning_message_title">Send only %s to this address.</string>
<string name="receive_bottom_sheet_warning_title">Send only %1$s on the %2$s network</string>
<string name="receive_token_description">Transfer funds from any wallet or exchange</string>
<string name="referral_button_participate">Participate</string>
<string name="referral_error_failed_to_load_info">Failed to load the information about the referral program. Please try again later.</string>

View file

@ -12,6 +12,7 @@ import com.tangem.common.ui.notifications.NotificationsFactory.addExistentialWar
import com.tangem.common.ui.notifications.NotificationsFactory.addFeeCoverageNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addFeeUnreachableNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addMinimumAmountErrorNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addRentExemptionNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addReserveAmountErrorNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addTransactionLimitErrorNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addValidateTransactionNotifications
@ -22,7 +23,6 @@ import com.tangem.domain.tokens.GetBalanceNotEnoughForFeeWarningUseCase
import com.tangem.domain.tokens.GetCurrencyCheckUseCase
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.tokens.model.warnings.CryptoCurrencyCheck
import com.tangem.domain.tokens.model.warnings.CryptoCurrencyWarning
import com.tangem.domain.transaction.error.GetFeeError
import com.tangem.domain.transaction.usecase.ValidateTransactionUseCase
import com.tangem.domain.utils.convertToSdkAmount
@ -312,9 +312,4 @@ internal class SendNotificationFactory(
add(NotificationUM.Warning.TooHigh(diff))
}
}
private fun MutableList<NotificationUM>.addRentExemptionNotification(rentWarning: CryptoCurrencyWarning.Rent?) {
if (rentWarning == null) return
add(NotificationUM.Solana.RentInfo(rentWarning))
}
}

View file

@ -7,6 +7,7 @@ import com.tangem.common.ui.notifications.NotificationsFactory.addExceedsBalance
import com.tangem.common.ui.notifications.NotificationsFactory.addExistentialWarningNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addFeeCoverageNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addFeeUnreachableNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addRentExemptionNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addReserveAmountErrorNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addTransactionLimitErrorNotification
import com.tangem.common.ui.notifications.NotificationsFactory.addValidateTransactionNotifications
@ -189,6 +190,10 @@ internal class AddStakingNotificationsTransformer(
val appCurrency = appCurrencyProvider()
val cryptoCurrency = cryptoCurrencyStatus.currency
addRentExemptionNotification(
rentWarning = currencyCheck.rentWarning,
)
addExistentialWarningNotification(
existentialDeposit = currencyCheck.existentialDeposit,
feeAmount = feeState?.fee?.amount?.value.orZero(),

View file

@ -69,6 +69,7 @@ import com.tangem.features.staking.impl.presentation.state.transformers.confirma
import com.tangem.features.staking.impl.presentation.state.transformers.notifications.AddStakingNotificationsTransformer
import com.tangem.features.staking.impl.presentation.state.transformers.notifications.DismissStakingNotificationsStateTransformer
import com.tangem.features.staking.impl.presentation.state.transformers.validator.ValidatorSelectChangeTransformer
import com.tangem.features.staking.impl.presentation.state.utils.checkAndCalculateSubtractedAmount
import com.tangem.features.staking.impl.presentation.state.utils.isSingleAction
import com.tangem.features.staking.impl.presentation.state.utils.withStubUnstakeAction
import com.tangem.utils.Provider
@ -633,12 +634,17 @@ internal class StakingViewModel @Inject constructor(
).leftOrNull()
}
val balanceAfterTransaction = calculateBalanceAfterTransaction(
amount = amount.orZero(),
fee = fee.orZero(),
reduceAmountBy = confirmationState?.reduceAmountBy.orZero(),
)
val currencyStatus = getCurrencyCheckUseCase(
userWalletId = userWalletId,
currencyStatus = cryptoCurrencyStatus,
amount = amount,
fee = fee,
balanceAfterTransaction = null, // ignore this in staking
balanceAfterTransaction = balanceAfterTransaction,
)
stateController.update(
AddStakingNotificationsTransformer(
@ -687,6 +693,22 @@ internal class StakingViewModel @Inject constructor(
stateController.update(DismissStakingNotificationsStateTransformer(notification))
}
private fun calculateBalanceAfterTransaction(
amount: BigDecimal,
fee: BigDecimal,
reduceAmountBy: BigDecimal,
): BigDecimal? {
val subtractedBalanceAmount = checkAndCalculateSubtractedAmount(
isAmountSubtractAvailable = isAmountSubtractAvailable,
cryptoCurrencyStatus = cryptoCurrencyStatus,
amountValue = amount.orZero(),
feeValue = fee.orZero(),
reduceAmountBy = reduceAmountBy,
)
val statusValue = cryptoCurrencyStatus.value as? CryptoCurrencyStatus.Loaded
return statusValue?.let { it.amount - subtractedBalanceAmount - fee.orZero() }
}
private fun awaitForAllowance() {
val approval = stakingApproval as? StakingApproval.Needed ?: return
allowanceTaskScheduler.scheduleTask(