Skip to content

Commit

Permalink
CP-9458: Fix unable to send erc20 on C-Chain (#2080)
Browse files Browse the repository at this point in the history
  • Loading branch information
atn4z7 authored Nov 13, 2024
1 parent c037a8a commit 32b4b66
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 42 deletions.
10 changes: 8 additions & 2 deletions packages/core-mobile/app/components/UniversalTokenSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ const UniversalTokenSelector: FC<Props> = ({
hideZeroBalanceTokens = false,
testID
}) => {
const theme = useApplicationContext().theme
const {
theme,
appHook: { tokenInCurrencyFormatter }
} = useApplicationContext()

const navigation = useNavigation<NavigationProp>()
const selectedCurrency = useSelector(selectSelectedCurrency)
const hasError = !!error
Expand Down Expand Up @@ -194,7 +198,9 @@ const UniversalTokenSelector: FC<Props> = ({
<FlexSpacer />
<AvaText.Body2>
{`${
selectedToken && amountInCurrency ? amountInCurrency : '-'
selectedToken && amountInCurrency
? tokenInCurrencyFormatter(amountInCurrency)
: '-'
} ${selectedCurrency}`}
</AvaText.Body2>
</Row>
Expand Down
17 changes: 16 additions & 1 deletion packages/core-mobile/app/hooks/networks/networkProviderHooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,31 @@ import {
BitcoinProvider,
JsonRpcBatchInternal
} from '@avalabs/core-wallets-sdk'
import { Network } from '@avalabs/core-chains-sdk'
import { useEffect, useState } from 'react'
import {
getAvalancheEvmProvider,
getAvalancheXpProvider,
getBitcoinProvider,
getEthereumProvider
getEthereumProvider,
getEvmProvider
} from 'services/network/utils/providerUtils'
import Logger from 'utils/Logger'
import { useNetworks } from './useNetworks'

// this will return an EVM provider (that uses the network.rpcUrl)
export function useEVMProvider(
network: Network
): JsonRpcBatchInternal | undefined {
const [evmProvider, setEVMProvider] = useState<JsonRpcBatchInternal>()
useEffect(() => {
getEvmProvider(network).then(setEVMProvider).catch(Logger.error)
}, [network])

return evmProvider
}

// this will always return an ethereum provider (infura)
export function useEthereumProvider(
isTestnet?: boolean
): JsonRpcBatchInternal | undefined {
Expand Down
4 changes: 2 additions & 2 deletions packages/core-mobile/app/screens/send/hooks/useEVMSend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useCallback, useEffect } from 'react'
import { useInAppRequest } from 'hooks/useInAppRequest'
import { useSendContext } from 'contexts/SendContext'
import { assertNotUndefined } from 'utils/assertions'
import { useEthereumProvider } from 'hooks/networks/networkProviderHooks'
import { useEVMProvider } from 'hooks/networks/networkProviderHooks'
import { SendAdapterEVM, SendErrorMessage } from '../utils/types'
import { send as sendEVM } from '../utils/evm/send'
import { getGasLimit } from '../utils/evm/getGasLimit'
Expand Down Expand Up @@ -33,7 +33,7 @@ const useEVMSend: SendAdapterEVM = ({
toAddress,
amount
} = useSendContext()
const provider = useEthereumProvider(!!network.isTestnet)
const provider = useEVMProvider(network)

const send = useCallback(async () => {
try {
Expand Down
11 changes: 1 addition & 10 deletions packages/core-mobile/app/screens/send/utils/evm/send.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { JsonRpcBatchInternal } from '@avalabs/core-wallets-sdk'
import { TransactionRequest } from 'ethers'
import { resolve } from '@avalabs/core-utils-sdk'
import { buildTx } from './buildEVMSendTx'
import { getGasLimit } from './getGasLimit'

export const send = async ({
request,
Expand Down Expand Up @@ -93,18 +92,10 @@ const getTransactionRequest = ({
toAddress,
amount
})
const gasLimit = await getGasLimit({
fromAddress,
provider,
token,
toAddress,
amount: amount ?? 0n
})

return {
...txRequest,
chainId,
gasLimit
chainId
}
})
}
8 changes: 4 additions & 4 deletions packages/core-mobile/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@
"gen:glacierApi": "npx openapi-zod-client 'https://glacier-api-dev.avax.network/api-json' -o './app/utils/network/glacierApi.client.ts'"
},
"dependencies": {
"@avalabs/avalanche-module": "0.11.7",
"@avalabs/avalanche-module": "0.11.8",
"@avalabs/avalanchejs": "4.1.0-alpha.15",
"@avalabs/bitcoin-module": "0.11.7",
"@avalabs/bitcoin-module": "0.11.8",
"@avalabs/bridge-unified": "2.1.0",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.11",
"@avalabs/core-chains-sdk": "3.1.0-alpha.11",
"@avalabs/core-coingecko-sdk": "3.1.0-alpha.11",
"@avalabs/core-utils-sdk": "3.1.0-alpha.11",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.11",
"@avalabs/evm-module": "0.11.7",
"@avalabs/evm-module": "0.11.8",
"@avalabs/glacier-sdk": "3.1.0-alpha.11",
"@avalabs/k2-alpine": "workspace:*",
"@avalabs/k2-mobile": "workspace:*",
"@avalabs/types": "3.1.0-alpha.11",
"@avalabs/vm-module-types": "0.11.7",
"@avalabs/vm-module-types": "0.11.8",
"@blockaid/client": "0.27.4",
"@coinbase/cbpay-js": "2.2.1",
"@cubist-labs/cubesigner-sdk": "0.3.29",
Expand Down
46 changes: 23 additions & 23 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ __metadata:
languageName: node
linkType: hard

"@avalabs/avalanche-module@npm:0.11.7":
version: 0.11.7
resolution: "@avalabs/avalanche-module@npm:0.11.7"
"@avalabs/avalanche-module@npm:0.11.8":
version: 0.11.8
resolution: "@avalabs/avalanche-module@npm:0.11.8"
dependencies:
"@avalabs/avalanchejs": 4.1.0-alpha.15
"@avalabs/core-chains-sdk": 3.1.0-alpha.11
Expand All @@ -60,12 +60,12 @@ __metadata:
"@avalabs/core-wallets-sdk": 3.1.0-alpha.11
"@avalabs/glacier-sdk": 3.1.0-alpha.11
"@avalabs/types": 3.1.0-alpha.11
"@avalabs/vm-module-types": 0.11.7
"@avalabs/vm-module-types": 0.11.8
"@metamask/rpc-errors": 6.3.0
big.js: 6.2.1
bn.js: 5.2.1
zod: 3.23.8
checksum: f8c0a47620c0f7dfd566fb24acd30b41d686605f93bfa9cb1dd77f3d68a1bbb31ac783fd863dd0144fad9926f209b9e012802ff972b70d951c89bda3b6ea185c
checksum: 9e326e6ada7699af3be40a0dab3d07943521fd77c9ec02b5821266e2f3c82f0022c932a93a62b521357821e1c56e9625573b0f64bab26497eb14df42b57ac327
languageName: node
linkType: hard

Expand All @@ -82,20 +82,20 @@ __metadata:
languageName: node
linkType: hard

"@avalabs/bitcoin-module@npm:0.11.7":
version: 0.11.7
resolution: "@avalabs/bitcoin-module@npm:0.11.7"
"@avalabs/bitcoin-module@npm:0.11.8":
version: 0.11.8
resolution: "@avalabs/bitcoin-module@npm:0.11.8"
dependencies:
"@avalabs/core-coingecko-sdk": 3.1.0-alpha.11
"@avalabs/core-utils-sdk": 3.1.0-alpha.11
"@avalabs/core-wallets-sdk": 3.1.0-alpha.11
"@avalabs/vm-module-types": 0.11.7
"@avalabs/vm-module-types": 0.11.8
"@metamask/rpc-errors": 6.3.0
big.js: 6.2.1
bitcoinjs-lib: 5.2.0
bn.js: 5.2.1
zod: 3.23.8
checksum: f9bb19850aa6d4a2c258d3a58fe30c4971fdb26ba64a4d3217f58ee14cab298f23693e1a8330bed8b7589cd059dac8a0e67c8901d0eb476664132bc3e3c6124a
checksum: 2054d42de70cae71ecb148b24ef9ba6e80dec52400c2cb38af5cb133738bc19eb0e9a01d09e9261f0f276d48bda6c15b1fbc982463d52c0f13690eeef0fbc74e
languageName: node
linkType: hard

Expand Down Expand Up @@ -158,22 +158,22 @@ __metadata:
version: 0.0.0-use.local
resolution: "@avalabs/core-mobile@workspace:packages/core-mobile"
dependencies:
"@avalabs/avalanche-module": 0.11.7
"@avalabs/avalanche-module": 0.11.8
"@avalabs/avalanchejs": 4.1.0-alpha.15
"@avalabs/bitcoin-module": 0.11.7
"@avalabs/bitcoin-module": 0.11.8
"@avalabs/bridge-unified": 2.1.0
"@avalabs/core-bridge-sdk": 3.1.0-alpha.11
"@avalabs/core-chains-sdk": 3.1.0-alpha.11
"@avalabs/core-coingecko-sdk": 3.1.0-alpha.11
"@avalabs/core-utils-sdk": 3.1.0-alpha.11
"@avalabs/core-wallets-sdk": 3.1.0-alpha.11
"@avalabs/evm-module": 0.11.7
"@avalabs/evm-module": 0.11.8
"@avalabs/glacier-sdk": 3.1.0-alpha.11
"@avalabs/k2-alpine": "workspace:*"
"@avalabs/k2-mobile": "workspace:*"
"@avalabs/tsconfig-mobile": "workspace:*"
"@avalabs/types": 3.1.0-alpha.11
"@avalabs/vm-module-types": 0.11.7
"@avalabs/vm-module-types": 0.11.8
"@babel/core": 7.25.7
"@babel/plugin-proposal-nullish-coalescing-operator": 7.18.6
"@babel/plugin-syntax-object-rest-spread": 7.8.3
Expand Down Expand Up @@ -433,17 +433,17 @@ __metadata:
languageName: node
linkType: hard

"@avalabs/evm-module@npm:0.11.7":
version: 0.11.7
resolution: "@avalabs/evm-module@npm:0.11.7"
"@avalabs/evm-module@npm:0.11.8":
version: 0.11.8
resolution: "@avalabs/evm-module@npm:0.11.8"
dependencies:
"@avalabs/core-coingecko-sdk": 3.1.0-alpha.11
"@avalabs/core-etherscan-sdk": 3.1.0-alpha.11
"@avalabs/core-utils-sdk": 3.1.0-alpha.11
"@avalabs/core-wallets-sdk": 3.1.0-alpha.11
"@avalabs/glacier-sdk": 3.1.0-alpha.11
"@avalabs/types": 3.1.0-alpha.11
"@avalabs/vm-module-types": 0.11.7
"@avalabs/vm-module-types": 0.11.8
"@blockaid/client": 0.11.0
"@metamask/rpc-errors": 6.3.0
"@openzeppelin/contracts": 4.9.6
Expand All @@ -453,7 +453,7 @@ __metadata:
zod: 3.23.8
peerDependencies:
ethers: 6.8.1
checksum: 830cf0f54db002eed9a31036fad9842893ec03717a0bfc3fcdac8ea056c6732cd7cb00fdca44db3d98416c18f2fcc46ef25ded4390595b3231033c67d22e78c3
checksum: 61acb1187b63428dbeeef40886bc698fb8e871c7c651e9d8069f34c67e52a367878d04608a650973db1ef73929a426d52438b11c0d5bfa84407142cc6a2d2185
languageName: node
linkType: hard

Expand Down Expand Up @@ -583,9 +583,9 @@ __metadata:
languageName: node
linkType: hard

"@avalabs/vm-module-types@npm:0.11.7":
version: 0.11.7
resolution: "@avalabs/vm-module-types@npm:0.11.7"
"@avalabs/vm-module-types@npm:0.11.8":
version: 0.11.8
resolution: "@avalabs/vm-module-types@npm:0.11.8"
dependencies:
"@avalabs/core-wallets-sdk": 3.1.0-alpha.11
"@avalabs/glacier-sdk": 3.1.0-alpha.11
Expand All @@ -594,7 +594,7 @@ __metadata:
zod: 3.23.8
peerDependencies:
ethers: 6.8.1
checksum: 959ed29c6bc186413899f7004d1d2907de58842b81f6d3e056e70f09b606771d56a29e8406e6ffb75fbdd0537b48cef6702edc8e9c2ed1427c3476254081f4ae
checksum: a74d0ed1f30472d6b28414e5c4039e6a9ec141037f1b77f78e9468b939ceca4e849b150d68bf86b8b1e010ac287a2b902730e4276a09117cab48361e9f637f0f
languageName: node
linkType: hard

Expand Down

0 comments on commit 32b4b66

Please sign in to comment.