From ffb678d86aa6df790fa66b81b158b9ff12c18435 Mon Sep 17 00:00:00 2001 From: abdrasulov Date: Fri, 21 Feb 2025 15:27:59 +0600 Subject: [PATCH] Add ZKsync blockchain support --- app/build.gradle | 6 ++++-- .../bankwallet/core/MarketKitExtensions.kt | 10 ++++++++++ .../bankwallet/core/factories/AdapterFactory.kt | 3 +++ .../core/factories/AddressValidatorFactory.kt | 1 + .../core/managers/EvmBlockchainManager.kt | 2 ++ .../core/managers/EvmSyncSourceManager.kt | 10 ++++++++++ .../core/managers/TransactionAdapterManager.kt | 1 + .../core/providers/AppConfigProvider.kt | 4 ++++ .../bankwallet/entities/Address.kt | 1 + .../modules/address/AddressHandlerFactory.kt | 2 ++ .../modules/address/AddressInputModule.kt | 1 + .../modules/address/IAddressHandler.kt | 2 ++ .../modules/addtoken/AddTokenService.kt | 1 + .../modules/balance/BalanceViewItemFactory.kt | 1 + .../market/filters/MarketFiltersService.kt | 1 + .../multiswap/providers/BaseUniswapV3Provider.kt | 1 + .../multiswap/providers/UniswapV3Provider.kt | 1 + .../SendTransactionServiceFactory.kt | 1 + .../bankwallet/modules/send/SendFragment.kt | 1 + .../transactionInfo/TransactionInfoModule.kt | 2 +- .../transactions/TransactionRecordRepository.kt | 1 + .../transactions/TransactionsViewModel.kt | 1 + .../watchaddress/WatchAddressViewModel.kt | 1 + .../compose/components/TransactionInfoCells.kt | 1 + .../res/drawable/logo_chain_zksync_trx_32.xml | 16 ++++++++++++++++ app/src/main/res/drawable/zksync_erc20.xml | 14 ++++++++++++++ 26 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/logo_chain_zksync_trx_32.xml create mode 100644 app/src/main/res/drawable/zksync_erc20.xml diff --git a/app/build.gradle b/app/build.gradle index 851d0f9d780..8ac6780217d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -104,6 +104,7 @@ android { resValue "string", "gnosisscanApiKey", "V2J8YU15ZX9S1W3GTUV2HXM11TP2TUBRW4" resValue "string", "ftmscanApiKey", "57YQ2GIRAZNV6M5HIJYYG3XQGGNIPVV8MF" resValue "string", "basescanApiKey", "AKEWS351FN9P9E2CFPWRWQVGHYUP7W8SUF" + resValue "string", "eraZkSyncApiKey", "NCUEZ2NFQHW7TG7J7J4MTG4VNG2V4Z2Z48" resValue "string", "is_release", "false" resValue "string", "guidesUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/refs/tags/v1.4/src/edu.json" resValue "string", "faqUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/master/src/faq.json" @@ -139,6 +140,7 @@ android { resValue "string", "gnosisscanApiKey", "KEXFAQKDUENZ5U9CW3ZKYJEJ84ZIHH9QTY" resValue "string", "ftmscanApiKey", "JAWRPW27KEMVXMJJ9UKY63CVPH3X5V9SMP" resValue "string", "basescanApiKey", "QU4RJVJXQCW812J3234EW9EV815TA6XC55" + resValue "string", "eraZkSyncApiKey", "NCUEZ2NFQHW7TG7J7J4MTG4VNG2V4Z2Z48" resValue "string", "is_release", "true" resValue "string", "guidesUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/refs/tags/v1.4/src/edu.json" resValue "string", "faqUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/v1.3/src/faq.json" @@ -303,9 +305,9 @@ dependencies { // Wallet kits implementation 'com.github.horizontalsystems:ton-kit-android:1cb4c1e' implementation 'com.github.horizontalsystems:bitcoin-kit-android:3f3194f' - implementation 'com.github.horizontalsystems:ethereum-kit-android:201296c' + implementation 'com.github.horizontalsystems:ethereum-kit-android:d423acf' implementation 'com.github.horizontalsystems:blockchain-fee-rate-kit-android:1d3bd49' - implementation 'com.github.horizontalsystems:market-kit-android:fdbf841' + implementation 'com.github.horizontalsystems:market-kit-android:988d5a3' implementation 'com.github.horizontalsystems:solana-kit-android:ce738d8' implementation 'com.github.horizontalsystems:tron-kit-android:dc3dca7' // Zcash SDK diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/MarketKitExtensions.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/MarketKitExtensions.kt index 81b8364370d..df8e49fe043 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/MarketKitExtensions.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/MarketKitExtensions.kt @@ -50,6 +50,7 @@ val Token.swappable: Boolean BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> true @@ -144,6 +145,7 @@ val TokenQuery.isSupported: Boolean BlockchainType.Polygon, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom, @@ -176,6 +178,7 @@ val Blockchain.description: String BlockchainType.Avalanche -> "AVAX, ERC20 tokens" BlockchainType.Optimism -> "L2 chain" BlockchainType.Base -> "L2 chain" + BlockchainType.ZkSync -> "L2 chain" BlockchainType.ArbitrumOne -> "L2 chain" BlockchainType.Solana -> "SOL, SPL tokens" BlockchainType.Gnosis -> "xDAI, ERC20 tokens" @@ -210,6 +213,7 @@ private val blockchainOrderMap: Map by lazy { BlockchainType.Polygon, BlockchainType.Base, BlockchainType.Avalanche, + BlockchainType.ZkSync, BlockchainType.Zcash, BlockchainType.BitcoinCash, BlockchainType.ECash, @@ -236,6 +240,7 @@ val BlockchainType.tokenIconPlaceholder: Int BlockchainType.Polygon -> R.drawable.polygon_erc20 BlockchainType.Optimism -> R.drawable.optimism_erc20 BlockchainType.Base -> R.drawable.base_erc20 + BlockchainType.ZkSync -> R.drawable.zksync_erc20 BlockchainType.ArbitrumOne -> R.drawable.arbitrum_erc20 BlockchainType.Gnosis -> R.drawable.gnosis_erc20 BlockchainType.Fantom -> R.drawable.fantom_erc20 @@ -259,6 +264,7 @@ val BlockchainType.title: String BlockchainType.ArbitrumOne -> "ArbitrumOne" BlockchainType.Optimism -> "Optimism" BlockchainType.Base -> "Base" + BlockchainType.ZkSync -> "ZKsync" BlockchainType.Solana -> "Solana" BlockchainType.Gnosis -> "Gnosis" BlockchainType.Fantom -> "Fantom" @@ -285,6 +291,7 @@ val BlockchainType.brandColor: Color? BlockchainType.Avalanche -> Color(0xFFD74F49) BlockchainType.Optimism -> Color(0xFFEB3431) BlockchainType.Base -> Color(0xFF2759F6) + BlockchainType.ZkSync -> Color(0xFF8D8FF0) BlockchainType.ArbitrumOne -> Color(0xFF96BEDC) else -> null } @@ -321,6 +328,7 @@ fun BlockchainType.supports(accountType: AccountType): Boolean { || this == BlockchainType.Avalanche || this == BlockchainType.Optimism || this == BlockchainType.Base + || this == BlockchainType.ZkSync || this == BlockchainType.ArbitrumOne || this == BlockchainType.Gnosis || this == BlockchainType.Fantom @@ -331,6 +339,7 @@ fun BlockchainType.supports(accountType: AccountType): Boolean { || this == BlockchainType.Avalanche || this == BlockchainType.Optimism || this == BlockchainType.Base + || this == BlockchainType.ZkSync || this == BlockchainType.ArbitrumOne || this == BlockchainType.Gnosis || this == BlockchainType.Fantom @@ -565,6 +574,7 @@ val BlockchainType.Companion.supported: List BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AdapterFactory.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AdapterFactory.kt index 63001d7449c..022c18bd290 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AdapterFactory.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AdapterFactory.kt @@ -140,6 +140,7 @@ class AdapterFactory( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { @@ -225,6 +226,7 @@ class AdapterFactory( BlockchainType.Polygon, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne -> { val evmKitManager = evmBlockchainManager.getEvmKitManager(blockchainType) evmKitManager.unlink(wallet.account) @@ -249,6 +251,7 @@ class AdapterFactory( BlockchainType.Polygon, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne -> { val evmKitManager = evmBlockchainManager.getEvmKitManager(blockchainType) evmKitManager.unlink(transactionSource.account) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AddressValidatorFactory.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AddressValidatorFactory.kt index 9f19e9967de..48a2384c259 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AddressValidatorFactory.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/factories/AddressValidatorFactory.kt @@ -40,6 +40,7 @@ object AddressValidatorFactory { BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmBlockchainManager.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmBlockchainManager.kt index a0f99604ad8..dbdf44bea91 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmBlockchainManager.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmBlockchainManager.kt @@ -50,6 +50,7 @@ class EvmBlockchainManager( BlockchainType.Avalanche -> Chain.Avalanche BlockchainType.Optimism -> Chain.Optimism BlockchainType.Base -> Chain.Base + BlockchainType.ZkSync -> Chain.ZkSync BlockchainType.ArbitrumOne -> Chain.ArbitrumOne BlockchainType.Gnosis -> Chain.Gnosis BlockchainType.Fantom -> Chain.Fantom @@ -85,6 +86,7 @@ class EvmBlockchainManager( BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.Base, + BlockchainType.ZkSync, ) } } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmSyncSourceManager.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmSyncSourceManager.kt index 1891db7a065..e4b848f1ab9 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmSyncSourceManager.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/EvmSyncSourceManager.kt @@ -39,6 +39,7 @@ class EvmSyncSourceManager( BlockchainType.Gnosis -> TransactionSource.gnosis(appConfigProvider.gnosisscanApiKey) BlockchainType.Fantom -> TransactionSource.fantom(appConfigProvider.ftmscanApiKey) BlockchainType.Base -> TransactionSource.basescan(appConfigProvider.basescanApiKey) + BlockchainType.ZkSync -> TransactionSource.eraZkSync(appConfigProvider.eraZkSyncApiKey) else -> throw Exception("Non-supported EVM blockchain") } } @@ -159,6 +160,15 @@ class EvmSyncSourceManager( ) ) + BlockchainType.ZkSync -> listOf( + evmSyncSource( + blockchainType, + "ZKsync", + RpcSource.zkSyncRpcHttp(), + defaultTransactionSource(blockchainType) + ) + ) + BlockchainType.ArbitrumOne -> listOf( evmSyncSource( blockchainType, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/TransactionAdapterManager.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/TransactionAdapterManager.kt index bbcae1cb845..eab051946e1 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/TransactionAdapterManager.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/TransactionAdapterManager.kt @@ -56,6 +56,7 @@ class TransactionAdapterManager( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/providers/AppConfigProvider.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/providers/AppConfigProvider.kt index 238a203e6c7..d5012332155 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/providers/AppConfigProvider.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/providers/AppConfigProvider.kt @@ -61,6 +61,9 @@ class AppConfigProvider(localStorage: ILocalStorage) { val basescanApiKey by lazy { Translator.getString(R.string.basescanApiKey).split(",") } + val eraZkSyncApiKey by lazy { + Translator.getString(R.string.eraZkSyncApiKey).split(",") + } val guidesUrl by lazy { Translator.getString(R.string.guidesUrl) } @@ -141,6 +144,7 @@ class AppConfigProvider(localStorage: ILocalStorage) { BlockchainType.Avalanche to "0x731352dcF66014156B1560B832B56069e7b38ab1", BlockchainType.Optimism to "0x731352dcF66014156B1560B832B56069e7b38ab1", BlockchainType.Base to "0x731352dcF66014156B1560B832B56069e7b38ab1", + BlockchainType.ZkSync to "0x731352dcF66014156B1560B832B56069e7b38ab1", BlockchainType.ArbitrumOne to "0x731352dcF66014156B1560B832B56069e7b38ab1", BlockchainType.Solana to "ELFQmFXqdS6C1zVqZifs7WAmLKovdEPbWSnqomhZoK3B", BlockchainType.Gnosis to "0x731352dcF66014156B1560B832B56069e7b38ab1", diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/entities/Address.kt b/app/src/main/java/io/horizontalsystems/bankwallet/entities/Address.kt index 472b1aee301..9a62279abd0 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/entities/Address.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/entities/Address.kt @@ -48,6 +48,7 @@ val BitcoinAddress.tokenType: TokenType BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Solana, BlockchainType.Gnosis, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressHandlerFactory.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressHandlerFactory.kt index b9c7fe83848..588e7aae8a0 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressHandlerFactory.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressHandlerFactory.kt @@ -56,6 +56,7 @@ class AddressHandlerFactory( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { @@ -90,6 +91,7 @@ class AddressHandlerFactory( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressInputModule.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressInputModule.kt index f66dc094b54..da529483ff7 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressInputModule.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/AddressInputModule.kt @@ -32,6 +32,7 @@ object AddressInputModule { BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/IAddressHandler.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/IAddressHandler.kt index 1be9c0418e3..b5dab8a6e27 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/IAddressHandler.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/address/IAddressHandler.kt @@ -108,6 +108,7 @@ class AddressHandlerUdn( BlockchainType.Polygon, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Avalanche, BlockchainType.Gnosis, BlockchainType.Fantom, @@ -138,6 +139,7 @@ class AddressHandlerUdn( BlockchainType.Ethereum, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom -> "ERC20" diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/addtoken/AddTokenService.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/addtoken/AddTokenService.kt index 81f8a302fa1..ee0d125d9f9 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/addtoken/AddTokenService.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/addtoken/AddTokenService.kt @@ -33,6 +33,7 @@ class AddTokenService( BlockchainType.ArbitrumOne, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Solana ) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewItemFactory.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewItemFactory.kt index b2e511a8318..ff2c9ce1610 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewItemFactory.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/balance/BalanceViewItemFactory.kt @@ -96,6 +96,7 @@ class BalanceViewItemFactory { BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Solana, BlockchainType.Gnosis, BlockchainType.Fantom, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersService.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersService.kt index 4a8f9dc1160..f14aa1b58bd 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersService.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersService.kt @@ -32,6 +32,7 @@ class MarketFiltersService( BlockchainType.Unsupported("okex-chain"), BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Polygon, BlockchainType.Unsupported("solana"), BlockchainType.Unsupported("sora"), diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/BaseUniswapV3Provider.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/BaseUniswapV3Provider.kt index e3026ade4c2..e9059038a1d 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/BaseUniswapV3Provider.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/BaseUniswapV3Provider.kt @@ -155,6 +155,7 @@ abstract class BaseUniswapV3Provider(dexType: DexType) : EvmSwapProvider() { BlockchainType.Polygon, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne -> uniswapV3Kit.etherToken(chain) else -> throw Exception("Invalid coin for swap: $token") } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/UniswapV3Provider.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/UniswapV3Provider.kt index 2d5b90812b5..16c5fedc3b9 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/UniswapV3Provider.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/providers/UniswapV3Provider.kt @@ -18,6 +18,7 @@ object UniswapV3Provider : BaseUniswapV3Provider(DexType.Uniswap) { BlockchainType.Polygon, BlockchainType.BinanceSmartChain, BlockchainType.Base, + BlockchainType.ZkSync, -> true else -> false } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/sendtransaction/SendTransactionServiceFactory.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/sendtransaction/SendTransactionServiceFactory.kt index 5de906f5f98..19db78fc611 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/sendtransaction/SendTransactionServiceFactory.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/multiswap/sendtransaction/SendTransactionServiceFactory.kt @@ -11,6 +11,7 @@ object SendTransactionServiceFactory { BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom -> SendTransactionServiceEvm(blockchainType) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/send/SendFragment.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/send/SendFragment.kt index a70f120a89c..9f5ccd9d29b 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/send/SendFragment.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/send/SendFragment.kt @@ -109,6 +109,7 @@ class SendFragment : BaseFragment() { BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.Gnosis, BlockchainType.Fantom, BlockchainType.ArbitrumOne -> { diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactionInfo/TransactionInfoModule.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactionInfo/TransactionInfoModule.kt index fa8eafa5454..ada30b886c5 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactionInfo/TransactionInfoModule.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactionInfo/TransactionInfoModule.kt @@ -63,6 +63,6 @@ data class TransactionInfoItem( val BlockchainType.resendable: Boolean get() = when (this) { - BlockchainType.Optimism, BlockchainType.Base, BlockchainType.ArbitrumOne -> false + BlockchainType.Optimism, BlockchainType.Base, BlockchainType.ZkSync, BlockchainType.ArbitrumOne -> false else -> true } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionRecordRepository.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionRecordRepository.kt index 9cf3355da1f..43e2594641b 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionRecordRepository.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionRecordRepository.kt @@ -78,6 +78,7 @@ class TransactionRecordRepository( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionsViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionsViewModel.kt index 57c4d7cdc3c..19f0b8002f8 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionsViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/transactions/TransactionsViewModel.kt @@ -246,6 +246,7 @@ data class TransactionViewItem( BlockchainType.Avalanche -> R.drawable.logo_chain_avalanche_trx_24 BlockchainType.Optimism -> R.drawable.logo_chain_optimism_trx_24 BlockchainType.Base -> R.drawable.logo_chain_base_trx_24 + BlockchainType.ZkSync -> R.drawable.logo_chain_zksync_trx_32 BlockchainType.ArbitrumOne -> R.drawable.logo_chain_arbitrum_one_trx_24 BlockchainType.Gnosis -> R.drawable.logo_chain_gnosis_trx_32 BlockchainType.Fantom -> R.drawable.logo_chain_fantom_trx_32 diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/watchaddress/WatchAddressViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/watchaddress/WatchAddressViewModel.kt index 82b08ac0f74..369f0b054a5 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/watchaddress/WatchAddressViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/watchaddress/WatchAddressViewModel.kt @@ -148,6 +148,7 @@ class WatchAddressViewModel( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne, BlockchainType.Gnosis, BlockchainType.Fantom -> Type.EvmAddress diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/ui/compose/components/TransactionInfoCells.kt b/app/src/main/java/io/horizontalsystems/bankwallet/ui/compose/components/TransactionInfoCells.kt index 1a3e5f10350..ee2511671af 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/ui/compose/components/TransactionInfoCells.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/ui/compose/components/TransactionInfoCells.kt @@ -715,6 +715,7 @@ private fun openTransactionOptionsModule( BlockchainType.Avalanche, BlockchainType.Optimism, BlockchainType.Base, + BlockchainType.ZkSync, BlockchainType.ArbitrumOne -> { navController.slideFromRight( R.id.transactionSpeedUpCancelFragment, diff --git a/app/src/main/res/drawable/logo_chain_zksync_trx_32.xml b/app/src/main/res/drawable/logo_chain_zksync_trx_32.xml new file mode 100644 index 00000000000..2c4e1108b09 --- /dev/null +++ b/app/src/main/res/drawable/logo_chain_zksync_trx_32.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/zksync_erc20.xml b/app/src/main/res/drawable/zksync_erc20.xml new file mode 100644 index 00000000000..a8d179dcffc --- /dev/null +++ b/app/src/main/res/drawable/zksync_erc20.xml @@ -0,0 +1,14 @@ + + + + + +