Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-17 15:15:04 +03:00
parent 52cc0be3cb
commit ba4e916cd0
17 changed files with 98 additions and 13 deletions

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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")
}

View file

@ -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
}

View file

@ -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 */

View file

@ -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)

View file

@ -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(

View file

@ -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
}
}
}
}
}

View file

@ -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"
}
}

View file

@ -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 {

View file

@ -63,4 +63,6 @@ interface GaslessTransactionRepository {
fun getBaseGasForTransaction(): BigInteger
fun getChainIdForNetwork(network: Network): Int
suspend fun getGaslessFeeAddresses(): Set<String>
}

View file

@ -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 {

View file

@ -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 {