Updated on 2026-08-14
This commit is contained in:
parent
52cc0be3cb
commit
ba4e916cd0
17 changed files with 98 additions and 13 deletions
|
|
@ -1767,7 +1767,7 @@
|
|||
<string name="wallet_import_seed_description">Importa una billetera existente con su frase de recuperación.</string>
|
||||
<string name="wallet_import_seed_navtitle">Importar billetera</string>
|
||||
<string name="wallet_import_seed_title">Introduzca la frase de recuperación</string>
|
||||
<string name="wallet_import_success_description">La copia de seguridad de su billetera se realizó con éxito.</string>
|
||||
<string name="wallet_import_success_description">Su billetera se ha importado con éxito.</string>
|
||||
<string name="wallet_import_success_navtitle">Importar billetera</string>
|
||||
<string name="wallet_import_success_title">Importación completada</string>
|
||||
<string name="wallet_import_title">Importar billetera</string>
|
||||
|
|
|
|||
|
|
@ -1753,7 +1753,7 @@
|
|||
<string name="wallet_import_seed_description">Importez un portefeuille existant à l\'aide de votre seedphrase.</string>
|
||||
<string name="wallet_import_seed_navtitle">Importer un wallet</string>
|
||||
<string name="wallet_import_seed_title">Entrez la seedphrase</string>
|
||||
<string name="wallet_import_success_description">Vous avez sauvegardé votre portefeuille avec succès.</string>
|
||||
<string name="wallet_import_success_description">Vous avez importé votre portefeuille avec succès.</string>
|
||||
<string name="wallet_import_success_navtitle">Importer un wallet</string>
|
||||
<string name="wallet_import_success_title">Importation terminée</string>
|
||||
<string name="wallet_import_title">Importer un portefeuille</string>
|
||||
|
|
|
|||
|
|
@ -317,6 +317,7 @@
|
|||
<string name="common_no">いいえ</string>
|
||||
<string name="common_no_address">アドレスがありません</string>
|
||||
<string name="common_not_added">未追加</string>
|
||||
<string name="common_not_available">利用できません</string>
|
||||
<string name="common_not_now">今はしない</string>
|
||||
<string name="common_now">今</string>
|
||||
<string name="common_ok">わかりました</string>
|
||||
|
|
@ -531,6 +532,10 @@
|
|||
<string name="express_transaction_id">ID: %s</string>
|
||||
<string name="express_transaction_id_copied">取引IDをコピーしました</string>
|
||||
<string name="exсhange_token_description">ポートフォリオ内のアセットをこのトークンと交換する</string>
|
||||
<string name="fee_selector_choose_speed_description">速度を上げるほど承認は速くなりますが、\nネットワーク手数料も高くなります。%s</string>
|
||||
<string name="fee_selector_choose_speed_title">速度を選択</string>
|
||||
<string name="fee_selector_choose_token_description">\nネットワーク手数料の支払いに使用するトークンを選択します。%s</string>
|
||||
<string name="fee_selector_choose_token_title">トークンを選択</string>
|
||||
<string name="feed_market_and_news">マーケット&ニュース</string>
|
||||
<string name="feed_tangem_ai">Tangem AI</string>
|
||||
<string name="feed_trending_now">いま話題</string>
|
||||
|
|
@ -588,7 +593,7 @@
|
|||
<string name="hw_backup_hardware_create_title">新しいウォレットを作成</string>
|
||||
<string name="hw_backup_hardware_description">Tangemの高性能ハードウェアウォレットで、セキュリティをさらに強化しましょう。</string>
|
||||
<string name="hw_backup_hardware_title">ハードウェアウォレット</string>
|
||||
<string name="hw_backup_hardware_upgrade_description">現在のウォレットをTangemに移します。</string>
|
||||
<string name="hw_backup_hardware_upgrade_description">現在のモバイルウォレットをTangemのコールドウォレットに変換します。</string>
|
||||
<string name="hw_backup_hardware_upgrade_title">現在のウォレットをアップグレードする</string>
|
||||
<string name="hw_backup_need_action">バックアップへ移動</string>
|
||||
<string name="hw_backup_need_description">アクセスコードを作成する前にウォレットをバックアップしてください。</string>
|
||||
|
|
@ -613,7 +618,7 @@
|
|||
<string name="hw_remove_wallet_confirmation_title">本当にこれを実行しますか?</string>
|
||||
<string name="hw_remove_wallet_nav_title">ウォレット削除</string>
|
||||
<string name="hw_remove_wallet_notification_action_backup_go">バックアップへ移動</string>
|
||||
<string name="hw_remove_wallet_notification_action_backup_view">バックアップを表示</string>
|
||||
<string name="hw_remove_wallet_notification_action_backup_view">リカバリーフレーズを表示</string>
|
||||
<string name="hw_remove_wallet_notification_action_forget">ウォレット削除</string>
|
||||
<string name="hw_remove_wallet_notification_action_forget_anyway">とにかく削除する</string>
|
||||
<string name="hw_remove_wallet_notification_description_has_backup">このウォレットにはバックアップがあります。ウォレットを削除する前に、復元できることを確認してください。</string>
|
||||
|
|
@ -804,7 +809,7 @@
|
|||
<string name="news_quick_recap">クイックまとめ</string>
|
||||
<string name="news_related_news">関連ニュース</string>
|
||||
<string name="news_related_tokens">関連トークン</string>
|
||||
<string name="news_sources">情報源</string>
|
||||
<string name="news_sources">関連ニュース</string>
|
||||
<string name="news_stay_in_the_loop">最新情報を入手</string>
|
||||
<string name="nfc_error_unavailable">お使いのデバイスではNFCが使用できません</string>
|
||||
<string name="nft_about_title">NFTについて</string>
|
||||
|
|
@ -1239,6 +1244,7 @@
|
|||
<string name="staking_details_apr">APR</string>
|
||||
<string name="staking_details_apy">APY</string>
|
||||
<string name="staking_details_auto_claiming_rewards_daily_text">報酬は毎日自動的にステーキング残高に蓄積されます。</string>
|
||||
<string name="staking_details_autocompound_rewards_earned">報酬はステーキング残高に自動的に複利で加算されます。獲得した資金:%s</string>
|
||||
<string name="staking_details_available">利用可能</string>
|
||||
<string name="staking_details_average_reward_rate">平均報酬率</string>
|
||||
<string name="staking_details_banner_text">ステーキングの仕組み</string>
|
||||
|
|
@ -1491,10 +1497,15 @@
|
|||
<string name="tangempay_kyc_confirm_cancellation_description">KYC手続きを中止しますか?いつでも再開できます。</string>
|
||||
<string name="tangempay_kyc_failed_description">プロフィールを確認できませんでした。ご不明な点があればサポートまでお問い合わせください。</string>
|
||||
<string name="tangempay_kyc_failed_title">申し訳ございませんが、本人確認を行うことができませんでした</string>
|
||||
<string name="tangempay_kyc_has_failed">KYCの認証に失敗しました</string>
|
||||
<string name="tangempay_kyc_in_progress">KYC進行中</string>
|
||||
<string name="tangempay_kyc_in_progress_notification_button">ステータスを表示</string>
|
||||
<string name="tangempay_kyc_in_progress_notification_title">Tangem PayのKYC手続き進行中</string>
|
||||
<string name="tangempay_kyc_in_progress_popup_description">以下のボタンから、現在のKYCステータスを確認するか、KYCをキャンセルできます。</string>
|
||||
<string name="tangempay_kyc_rejected">KYCが承認されませんでした</string>
|
||||
<string name="tangempay_kyc_rejected_button_text">KYCブロックを非表示</string>
|
||||
<string name="tangempay_kyc_rejected_description">申し訳ありません、確認できませんでした</string>
|
||||
<string name="tangempay_kyc_rejected_description_span">あなたのプロフィール。</string>
|
||||
<string name="tangempay_onboarding_banner_description">無料のTangem Visaバーチャルカードを入手</string>
|
||||
<string name="tangempay_onboarding_banner_title">日常の支払いにUSDCを利用</string>
|
||||
<string name="tangempay_onboarding_get_card_button_text">カードをGET</string>
|
||||
|
|
@ -1698,7 +1709,7 @@
|
|||
<string name="wallet_import_seed_description">リカバリーフレーズを使って既存のウォレットをインポートします。</string>
|
||||
<string name="wallet_import_seed_navtitle">ウォレットをインポート</string>
|
||||
<string name="wallet_import_seed_title">リカバリーフレーズを入力</string>
|
||||
<string name="wallet_import_success_description">ウォレットのバックアップが正常に完了しました。</string>
|
||||
<string name="wallet_import_success_description">ウォレットのインポートに成功しました。</string>
|
||||
<string name="wallet_import_success_navtitle">ウォレットをインポート</string>
|
||||
<string name="wallet_import_success_title">インポート完了</string>
|
||||
<string name="wallet_import_title">ウォレットをインポート</string>
|
||||
|
|
@ -1713,7 +1724,7 @@
|
|||
<string name="wallet_settings_access_code_description">このアクセスコードはウォレットを保護し、ログインや取引の署名に使用されます。</string>
|
||||
<string name="wallet_settings_access_code_title">アクセスコードの設定・変更</string>
|
||||
<string name="wallet_settings_change_access_code_title">アクセスコードを変更する</string>
|
||||
<string name="wallet_settings_push_notifications_description">ウォレットの受信取引とTangemの更新について通知を受け取る。</string>
|
||||
<string name="wallet_settings_push_notifications_description">ウォレットへの入金取引をプッシュ通知で受け取る。</string>
|
||||
<string name="wallet_settings_push_notifications_huawei_warning">現在、Huaweiデバイスではプッシュ通知が機能しない可能性があります。現在、解決策の検討に取り組んでおり、今後のアップデートで修正をリリースする予定です。ご理解のほどよろしくお願いいたします。</string>
|
||||
<string name="wallet_settings_push_notifications_title">取引通知</string>
|
||||
<string name="wallet_settings_set_access_code_title">アクセスコードを設定する</string>
|
||||
|
|
|
|||
|
|
@ -39,10 +39,12 @@
|
|||
<string name="account_edit_failure_dialog_title">Невозможно отредактировать аккаунт</string>
|
||||
<string name="account_edit_success_message">Аккаунт сохранен</string>
|
||||
<string name="account_for_rewards">Аккаунт для наград</string>
|
||||
<string name="account_form_account_index">Аккаунт #%s — используется для генерации адреса.</string>
|
||||
<string name="account_form_create_button">Добавить аккаунт</string>
|
||||
<string name="account_form_edit_button">Сохранить</string>
|
||||
<string name="account_form_name">Название аккаунта</string>
|
||||
<string name="account_form_name_already_exist_error_description">Имя аккаунта уже существует</string>
|
||||
<string name="account_form_name_already_exist_error_description">Аккаунт с таким названием уже существует. Пожалуйста, выберите другое название.</string>
|
||||
<string name="account_form_name_already_exist_error_title">Название аккаунта уже используется</string>
|
||||
<string name="account_form_placeholder_edit_account">Аккаунт</string>
|
||||
<string name="account_form_placeholder_new_account">Новый аккаунт</string>
|
||||
<string name="account_form_title_create">Добавить аккаунт</string>
|
||||
|
|
@ -254,6 +256,7 @@
|
|||
<string name="common_confirm">Подтвердить</string>
|
||||
<string name="common_connecting">Подключение</string>
|
||||
<string name="common_contact_support">Обратиться в поддержку</string>
|
||||
<string name="common_contact_tangem_support">Связаться с поддержкой</string>
|
||||
<string name="common_continue">Продолжить</string>
|
||||
<string name="common_convert">Конвертировать</string>
|
||||
<string name="common_copy">Копировать</string>
|
||||
|
|
@ -379,6 +382,7 @@
|
|||
<string name="common_supported_networks">Поддерживаемые сети</string>
|
||||
<string name="common_swap">Обменять</string>
|
||||
<string name="common_tangem">Tangem</string>
|
||||
<string name="common_tangem_wallet">Tangem Кошелек</string>
|
||||
<string name="common_terms_and_conditions">условия участия</string>
|
||||
<string name="common_terms_of_use">Условиями использования</string>
|
||||
<string name="common_to">На</string>
|
||||
|
|
@ -546,6 +550,9 @@
|
|||
<string name="express_transaction_id">ID: %s</string>
|
||||
<string name="express_transaction_id_copied">ID транзакции скопирован</string>
|
||||
<string name="exсhange_token_description">Обменяйте любой актив в вашем портфеле на этот токен</string>
|
||||
<string name="fee_selector_choose_speed_description">Более высокая скорость означает более быстрое подтверждение, но и более высокую сетевую комиссию. %s</string>
|
||||
<string name="fee_selector_choose_speed_title">Выбрать скорость</string>
|
||||
<string name="fee_selector_choose_token_description">Выберите какой токен будет использоваться для оплаты комиссии сети. %s</string>
|
||||
<string name="fee_selector_choose_token_title">Выбрать токен</string>
|
||||
<string name="feed_market_and_news">Рынок и Новости</string>
|
||||
<string name="feed_trending_now">В тренде</string>
|
||||
|
|
@ -834,7 +841,7 @@
|
|||
<string name="news_quick_recap">Резюме</string>
|
||||
<string name="news_related_news">Связанные новости</string>
|
||||
<string name="news_related_tokens">Связанные токены</string>
|
||||
<string name="news_sources">Источники</string>
|
||||
<string name="news_sources">Связанные новости</string>
|
||||
<string name="news_stay_in_the_loop">Будьте в курсе</string>
|
||||
<string name="nfc_error_unavailable">Функция NFC недоступна на вашем устройстве</string>
|
||||
<string name="nft_about_title">О NFT</string>
|
||||
|
|
@ -1121,6 +1128,7 @@
|
|||
<string name="reset_card_to_factory_button_title">Сбросить карту</string>
|
||||
<string name="reset_card_to_factory_condition_1">Я понимаю, что после выполнения этого действия у меня больше не будет доступа к текущему кошельку</string>
|
||||
<string name="reset_card_to_factory_condition_2">Я понимаю, что не смогу использовать эту карту для восстановления кода доступа на других картах текущего кошелька</string>
|
||||
<string name="reset_card_to_factory_condition_3">Я понимаю, что полностью потеряю доступ к своей карте Tangem Pay и всем средствам на ней без возможности восстановления.</string>
|
||||
<string name="reset_card_with_backup_to_factory_message">Сброс к заводским настройкам приведет к полному удалению кошелька с выбранной карты или кольца. Вы не сможете восстановить текущий кошелек или использовать данную карту или кольцо для восстановления кода доступа.</string>
|
||||
<string name="reset_card_without_backup_to_factory_message">Сброс к заводским настройкам приведет к полному удалению кошелька с выбранной карты или кольца. Вы не сможете восстановить текущий кошелек.</string>
|
||||
<string name="reset_cards_dialog_complete_description">Все Tangem девайсы были сброшены.</string>
|
||||
|
|
@ -1467,6 +1475,7 @@
|
|||
<string name="tangem_pay_freeze_card_success">Карта заморожена</string>
|
||||
<string name="tangem_pay_get_help">Обратиться в поддержку</string>
|
||||
<string name="tangem_pay_other">Другое</string>
|
||||
<string name="tangem_pay_rooted_device_subtitle">Невозможно использовать на устройствах с root-доступом.</string>
|
||||
<string name="tangem_pay_status_completed">Успешно завершено</string>
|
||||
<string name="tangem_pay_status_declined">Отклонено</string>
|
||||
<string name="tangem_pay_status_pending">В процессе</string>
|
||||
|
|
@ -1544,6 +1553,7 @@
|
|||
<string name="tangempay_kyc_in_progress_notification_button">Посмотреть статус</string>
|
||||
<string name="tangempay_kyc_in_progress_notification_title">KYC в процессе для Tangem Pay</string>
|
||||
<string name="tangempay_kyc_in_progress_popup_description">Вы можете посмотреть текущий статус KYC или отменить его</string>
|
||||
<string name="tangempay_kyc_rejected">KYC отклонено</string>
|
||||
<string name="tangempay_onboarding_banner_description">Откройте бесплатную виртуальную карту Tangem Visa</string>
|
||||
<string name="tangempay_onboarding_banner_title">Оплачивайте ежедневные покупки в USDC</string>
|
||||
<string name="tangempay_onboarding_get_card_button_text">Открыть карту</string>
|
||||
|
|
@ -1732,7 +1742,7 @@
|
|||
<string name="wallet_import_seed_description">Импортируйте существующий кошелек через вашу фразу восстановления.</string>
|
||||
<string name="wallet_import_seed_navtitle">Имрортировать кошелек</string>
|
||||
<string name="wallet_import_seed_title">Ввести фразу восстановления</string>
|
||||
<string name="wallet_import_success_description">Вы успешно сделали бэкап вашего кошелька.</string>
|
||||
<string name="wallet_import_success_description">Вы успешно импортировали свой кошелек.</string>
|
||||
<string name="wallet_import_success_navtitle">Импортировать кошелек</string>
|
||||
<string name="wallet_import_success_title">Импорт завершен</string>
|
||||
<string name="wallet_import_title">Импортировать кошелек</string>
|
||||
|
|
|
|||
|
|
@ -1752,7 +1752,7 @@
|
|||
<string name="wallet_import_seed_description">Імпортуйте існуючий гаманець за допомогою сід-фрази.</string>
|
||||
<string name="wallet_import_seed_navtitle">Імпортувати гаманець</string>
|
||||
<string name="wallet_import_seed_title">Введіть фразу відновлення</string>
|
||||
<string name="wallet_import_success_description">Ви успішно створили резервну копію свого гаманця.</string>
|
||||
<string name="wallet_import_success_description">Ви успішно імпортували свій гаманець.</string>
|
||||
<string name="wallet_import_success_navtitle">Імпортувати гаманець</string>
|
||||
<string name="wallet_import_success_title">Імпорт завершено</string>
|
||||
<string name="wallet_import_title">Імпортувати гаманець</string>
|
||||
|
|
|
|||
|
|
@ -323,6 +323,7 @@
|
|||
<string name="common_no">No</string>
|
||||
<string name="common_no_address">No address</string>
|
||||
<string name="common_not_added">Not Added</string>
|
||||
<string name="common_not_available">Not available</string>
|
||||
<string name="common_not_now">Not now</string>
|
||||
<string name="common_now">Now</string>
|
||||
<string name="common_ok">OK</string>
|
||||
|
|
@ -559,6 +560,7 @@
|
|||
<string name="feedback_subject_support_tangem">Tangem feedback</string>
|
||||
<string name="feedback_subject_tx_failed">Can\'t send a transaction</string>
|
||||
<string name="feedback_token_description_error">Coin description error</string>
|
||||
<string name="gasless_transaction_fee">Gasless transaction fee</string>
|
||||
<string name="generic_error">An error occurred</string>
|
||||
<string name="generic_error_code">An error occurred. Code: %s.</string>
|
||||
<string name="generic_requires_memo_error">Requires memo</string>
|
||||
|
|
@ -821,7 +823,7 @@
|
|||
<string name="news_quick_recap">Quick recap</string>
|
||||
<string name="news_related_news">Related News</string>
|
||||
<string name="news_related_tokens">Related tokens</string>
|
||||
<string name="news_sources">Sources</string>
|
||||
<string name="news_sources">Related news</string>
|
||||
<string name="news_stay_in_the_loop">Stay in the loop</string>
|
||||
<string name="nfc_error_unavailable">NFC is not available on your device</string>
|
||||
<string name="nft_about_title">About NFT</string>
|
||||
|
|
@ -989,6 +991,7 @@
|
|||
<string name="onboarding_wallet_info_title_fourth">Access code restore</string>
|
||||
<string name="onboarding_wallet_info_title_second">Identical cards</string>
|
||||
<string name="onboarding_wallet_info_title_third">Access code</string>
|
||||
<string name="only_one_mobile_wallet_explanation">You can have either a mobile wallet or a hardware wallet at one time. Upgrade your wallet or delete it from the app to start using a Tangem cold wallet.</string>
|
||||
<string name="onramp_all_offers_button_title">All offers</string>
|
||||
<string name="onramp_avaiable_with_payment_methods">Available with %s</string>
|
||||
<string name="onramp_choose_provider_title_hint">Providers facilitate transactions</string>
|
||||
|
|
@ -1774,7 +1777,7 @@
|
|||
<string name="wallet_import_seed_description">Import an existing wallet with your recovery phrase.</string>
|
||||
<string name="wallet_import_seed_navtitle">Import wallet</string>
|
||||
<string name="wallet_import_seed_title">Enter recovery phrase</string>
|
||||
<string name="wallet_import_success_description">You successfully backed up your wallet.</string>
|
||||
<string name="wallet_import_success_description">You successfully import up your wallet.</string>
|
||||
<string name="wallet_import_success_navtitle">Import wallet</string>
|
||||
<string name="wallet_import_success_title">Import completed</string>
|
||||
<string name="wallet_import_title">Import wallet</string>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ import com.tangem.domain.transaction.models.GaslessTransactionData
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.math.BigInteger
|
||||
|
||||
|
|
@ -26,6 +28,8 @@ class DefaultGaslessTransactionRepository(
|
|||
) : GaslessTransactionRepository {
|
||||
|
||||
private val supportedTokensState = MutableStateFlow<Map<Network.ID, Set<CryptoCurrency>>>(hashMapOf())
|
||||
private val allFeeRecipientAddress = mutableSetOf<String>()
|
||||
private val addressesMutex = Mutex()
|
||||
|
||||
private val gaslessTransactionRequestBuilder = GaslessTransactionRequestBuilder()
|
||||
private val signedTransactionResultConverter = GaslessSignedTransactionResultConverter()
|
||||
|
|
@ -115,6 +119,21 @@ class DefaultGaslessTransactionRepository(
|
|||
return networkBlockchain.getChainId() ?: error("ChainId not found for blockchain ${networkBlockchain.name}")
|
||||
}
|
||||
|
||||
override suspend fun getGaslessFeeAddresses(): Set<String> {
|
||||
return addressesMutex.withLock {
|
||||
allFeeRecipientAddress.ifEmpty {
|
||||
val allFeeAddresses = getAllFeeRecipientAddresses()
|
||||
allFeeRecipientAddress.addAll(allFeeAddresses)
|
||||
allFeeRecipientAddress
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun getAllFeeRecipientAddresses(): Set<String> {
|
||||
// TODO Replace with other backend call to get all fee recipient addresses when available
|
||||
return setOf(getTokenFeeReceiverAddress())
|
||||
}
|
||||
|
||||
private companion object {
|
||||
val BASE_GAS_FOR_TRANSACTION: BigInteger = BigInteger("100000")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,10 @@ class MockedGaslessTransactionRepository(
|
|||
return networkBlockchain.getChainId() ?: error("ChainId not found for blockchain ${networkBlockchain.name}")
|
||||
}
|
||||
|
||||
override suspend fun getGaslessFeeAddresses(): Set<String> {
|
||||
return setOf("0x2bD8AA05a92CcDaeDE5d42EB7D196ed07F8F8EF3")
|
||||
}
|
||||
|
||||
override suspend fun getTokenFeeReceiverAddress(): String {
|
||||
return TOKEN_RECEIVER_ADDRESS
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ dependencies {
|
|||
implementation(projects.domain.walletManager)
|
||||
implementation(projects.domain.demo)
|
||||
implementation(projects.domain.card)
|
||||
implementation(projects.domain.transaction)
|
||||
api(projects.domain.models)
|
||||
|
||||
/** Domain models */
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import com.tangem.domain.models.network.Network
|
|||
import com.tangem.domain.models.network.TxInfo
|
||||
import com.tangem.domain.models.wallet.UserWallet
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.domain.transaction.GaslessTransactionRepository
|
||||
import com.tangem.domain.transaction.models.AssetRequirementsCondition
|
||||
import com.tangem.domain.txhistory.models.PaginationWrapper
|
||||
import com.tangem.domain.txhistory.models.TxHistoryState
|
||||
|
|
@ -61,6 +62,7 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
private val userWalletsStore: UserWalletsStore,
|
||||
private val assetLoader: AssetLoader,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
private val gaslessTransactionRepository: GaslessTransactionRepository,
|
||||
blockchainSDKFactory: BlockchainSDKFactory,
|
||||
) : WalletManagersFacade {
|
||||
|
||||
|
|
@ -284,6 +286,7 @@ internal class DefaultWalletManagersFacade @Inject constructor(
|
|||
items = SdkTransactionHistoryItemConverter(
|
||||
smartContractMethods = readSmartContractMethods(),
|
||||
yieldSupplyAddresses = YIELD_SUPPLY_ADDRESSES,
|
||||
gaslessFeeAddresses = gaslessTransactionRepository.getGaslessFeeAddresses(),
|
||||
).convertList(itemsResult.data.items),
|
||||
)
|
||||
is Result.Failure -> error(itemsResult.error.message ?: itemsResult.error.customMessage)
|
||||
|
|
|
|||
|
|
@ -9,11 +9,13 @@ import com.tangem.blockchain.transactionhistory.models.TransactionHistoryItem as
|
|||
internal class SdkTransactionHistoryItemConverter(
|
||||
smartContractMethods: Map<String, SmartContractMethod>,
|
||||
yieldSupplyAddresses: Set<String>,
|
||||
gaslessFeeAddresses: Set<String>,
|
||||
) : Converter<SdkTransactionHistoryItem, TxInfo> {
|
||||
|
||||
private val typeConverter by lazy { SdkTransactionTypeConverter(
|
||||
smartContractMethods = smartContractMethods,
|
||||
yieldSupplyAddresses = yieldSupplyAddresses,
|
||||
gaslessFeeAddresses = gaslessFeeAddresses,
|
||||
) }
|
||||
|
||||
override fun convert(value: SdkTransactionHistoryItem): TxInfo = TxInfo(
|
||||
|
|
|
|||
|
|
@ -13,8 +13,11 @@ import com.tangem.utils.converter.Converter
|
|||
internal class SdkTransactionTypeConverter(
|
||||
private val smartContractMethods: Map<String, SmartContractMethod>,
|
||||
private val yieldSupplyAddresses: Set<String>,
|
||||
gaslessFeeAddresses: Set<String>,
|
||||
) : Converter<TransactionHistoryItem, TxInfo.TransactionType> {
|
||||
|
||||
private val gaslessFeeAddressesLowercase: Set<String> = gaslessFeeAddresses.map { it.lowercase() }.toSet()
|
||||
|
||||
override fun convert(value: TransactionHistoryItem): TxInfo.TransactionType {
|
||||
val (type, destination) = value.type to value.destinationType
|
||||
val source = value.sourceType
|
||||
|
|
@ -125,8 +128,23 @@ internal class SdkTransactionTypeConverter(
|
|||
)
|
||||
}
|
||||
"supplyTopUp" -> TxInfo.TransactionType.YieldSupply.Topup
|
||||
"gaslessTransaction" -> getTypeForGaslessMethod(destination)
|
||||
null -> TxInfo.TransactionType.UnknownOperation
|
||||
else -> TxInfo.TransactionType.Operation(name = methodName.replaceFirstChar { it.titlecase() })
|
||||
} ?: TxInfo.TransactionType.Operation(name = methodName?.replaceFirstChar { it.titlecase() }.orEmpty())
|
||||
}
|
||||
|
||||
private fun getTypeForGaslessMethod(destination: TransactionHistoryItem.DestinationType): TxInfo.TransactionType {
|
||||
return when (destination) {
|
||||
is TransactionHistoryItem.DestinationType.Multiple -> TxInfo.TransactionType.UnknownOperation
|
||||
is TransactionHistoryItem.DestinationType.Single -> {
|
||||
val address = destination.addressType.address.lowercase()
|
||||
if (gaslessFeeAddressesLowercase.contains(address)) {
|
||||
TxInfo.TransactionType.GaslessFee
|
||||
} else {
|
||||
TxInfo.TransactionType.UnknownOperation
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -246,5 +246,10 @@
|
|||
"info": "P2PEthPool",
|
||||
"source": "https://docs.p2p.org/",
|
||||
"name": "pooledUnstake"
|
||||
},
|
||||
"0xaa03b617": {
|
||||
"info": "GaslessTransactions",
|
||||
"source": "https://github.com/tangem-developments/tangem-gasless-service",
|
||||
"name": "gaslessTransaction"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,6 +107,9 @@ data class TxInfo(
|
|||
@Serializable
|
||||
data class Operation(val name: String) : TransactionType
|
||||
|
||||
@Serializable
|
||||
data object GaslessFee : TransactionType
|
||||
|
||||
@Serializable
|
||||
sealed interface YieldSupply : TransactionType {
|
||||
|
||||
|
|
|
|||
|
|
@ -63,4 +63,6 @@ interface GaslessTransactionRepository {
|
|||
fun getBaseGasForTransaction(): BigInteger
|
||||
|
||||
fun getChainIdForNetwork(network: Network): Int
|
||||
|
||||
suspend fun getGaslessFeeAddresses(): Set<String>
|
||||
}
|
||||
|
|
@ -63,6 +63,7 @@ internal class TxHistoryItemToTransactionStateConverter(
|
|||
is TransactionType.UnknownOperation,
|
||||
is TransactionType.YieldSupply.Send,
|
||||
TransactionType.YieldSupply.Topup,
|
||||
TransactionType.GaslessFee,
|
||||
-> if (isOutgoing) R.drawable.ic_arrow_up_24 else R.drawable.ic_arrow_down_24
|
||||
}
|
||||
}
|
||||
|
|
@ -104,6 +105,7 @@ internal class TxHistoryItemToTransactionStateConverter(
|
|||
)
|
||||
}
|
||||
is TransactionType.UnknownOperation -> resourceReference(R.string.transaction_history_operation)
|
||||
TransactionType.GaslessFee -> resourceReference(R.string.gasless_transaction_fee)
|
||||
}
|
||||
|
||||
private fun TxInfo.extractSubtitle(): TextReference {
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ internal class TxHistoryItemStateConverter(
|
|||
is TransactionType.UnknownOperation,
|
||||
is TransactionType.YieldSupply.Send,
|
||||
TransactionType.YieldSupply.Topup,
|
||||
TransactionType.GaslessFee,
|
||||
-> if (isOutgoing) R.drawable.ic_arrow_up_24 else R.drawable.ic_arrow_down_24
|
||||
}
|
||||
}
|
||||
|
|
@ -114,6 +115,7 @@ internal class TxHistoryItemStateConverter(
|
|||
)
|
||||
}
|
||||
is TransactionType.UnknownOperation -> resourceReference(R.string.transaction_history_operation)
|
||||
TransactionType.GaslessFee -> resourceReference(R.string.gasless_transaction_fee)
|
||||
}
|
||||
|
||||
private fun TxInfo.extractSubtitle(): TextReference {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue