diff --git a/src/components/transactions/eip5792/sendCalls.js b/src/components/transactions/eip5792/sendCalls.js index d22424ae..1f2ee1c7 100644 --- a/src/components/transactions/eip5792/sendCalls.js +++ b/src/components/transactions/eip5792/sendCalls.js @@ -17,9 +17,12 @@ export const DEFAULT_CALLS = [ const ERC20_USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; const ERC20_USDT = '0xdAC17F958D2ee523a2206206994597C13D831ec7'; +const CHAIN_ID_MAINNET = 1; +const REQUIRED_AMOUNT = '0x186a0'; // 0.1 USDC (100000 units, 6 decimals) const ERC721_BORED_APE = '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'; const ERC1155_OPENSTORE = '0x495f947276749ce646f68ac8c248420045cb7b5e'; const PERMIT2 = '0x000000000022D473030F116dDEE9F6B43aC78BA3'; +const TEST_RECIPIENT_ADDRESS = '0x0c54FcCd2e384b4BB6f2E405Bf5Cbc15a017AaFb'; const CALL_APPROVAL_ERC20_LEGACY = { data: '0x095ea7b30000000000000000000000000c54FcCd2e384b4BB6f2E405Bf5Cbc15a017AaFb0000000000000000000000000000000000000000000000000000000000459480', @@ -112,6 +115,14 @@ export function sendCallsComponent(parentContainer) { Send Calls - Multiple Approvals + + `, @@ -128,25 +139,41 @@ export function sendCallsComponent(parentContainer) { const sendCallsApprovalButton = document.getElementById( 'eip5792SendCallsApprovalButton', ); + const sendCallsRequiredAssetsButton = document.getElementById( + 'eip5792SendCallsRequiredAssetsButton', + ); const errorContainer = document.getElementById( 'eip5792SendCallsErrorContainer', ); const errorOutput = document.getElementById('eip5792SendCallsError'); + function updateRequiredAssetsButtonState() { + const isConnected = + globalContext.accounts && globalContext.accounts.length > 0; + const isMainnet = globalContext.chainIdInt === CHAIN_ID_MAINNET; + sendCallsRequiredAssetsButton.disabled = !isConnected || !isMainnet; + } + document.addEventListener('globalConnectionChange', function (e) { if (e.detail.connected) { editButton.disabled = false; addCallButton.disabled = false; sendCallsButton.disabled = false; sendCallsApprovalButton.disabled = false; + updateRequiredAssetsButtonState(); } }); + document.addEventListener('chainChanged', function () { + updateRequiredAssetsButtonState(); + }); + document.addEventListener('disableAndClear', function () { editButton.disabled = true; addCallButton.disabled = true; sendCallsButton.disabled = true; sendCallsApprovalButton.disabled = true; + sendCallsRequiredAssetsButton.disabled = true; }); editButton.onclick = async () => { @@ -191,16 +218,36 @@ export function sendCallsComponent(parentContainer) { ]); }; - async function submitRequest(calls) { - try { - const result = await globalContext.provider.request({ - method: 'wallet_sendCalls', - params: [ + sendCallsRequiredAssetsButton.onclick = () => { + submitRequest([{ to: TEST_RECIPIENT_ADDRESS, value: '0x0' }], { + auxiliaryFunds: { + supported: true, + requiredAssets: [ { - ...getParams(), - ...(calls ? { calls } : {}), + address: ERC20_USDC, + amount: REQUIRED_AMOUNT, + standard: 'erc20', }, ], + }, + }); + }; + + async function submitRequest(calls, capabilities) { + try { + const params = getParams(); + + if (calls) { + params.calls = calls; + } + + if (capabilities) { + params.capabilities = capabilities; + } + + const result = await globalContext.provider.request({ + method: 'wallet_sendCalls', + params: [params], }); document.getElementById('eip5792RequestIdInput').value = result.id;