diff --git a/packages/extension/src/ui/apis/asset/confidentialTransferFrom.js b/packages/extension/src/ui/apis/asset/confidentialTransferFrom.js index e24fb59ff..64e2e663b 100644 --- a/packages/extension/src/ui/apis/asset/confidentialTransferFrom.js +++ b/packages/extension/src/ui/apis/asset/confidentialTransferFrom.js @@ -12,9 +12,10 @@ export default async function confidentialTransferFrom({ proof, signature = '0x', spender, + isGSNAvailable, }) { const proofData = proof.encodeABI(assetAddress); - const response = await ConnectionService.sendTransaction({ + const transactionData = { contract: 'AccountRegistry', method: 'confidentialTransferFrom', data: [ @@ -24,7 +25,13 @@ export default async function confidentialTransferFrom({ spender, signature, ], - }); + }; + const response = isGSNAvailable + ? await ConnectionService.sendTransaction(transactionData) + : await ConnectionService.post({ + action: 'metamask.send', + data: transactionData, + }); return { ...response, diff --git a/packages/extension/src/ui/pages/Withdraw.jsx b/packages/extension/src/ui/pages/Withdraw.jsx index d30100f85..01a04cd37 100644 --- a/packages/extension/src/ui/pages/Withdraw.jsx +++ b/packages/extension/src/ui/pages/Withdraw.jsx @@ -30,11 +30,12 @@ const Withdraw = ({ proxyContract, } = gsnConfig; const steps = isGSNAvailable ? withdrawSteps.gsn : withdrawSteps.metamask; - const sender = isGSNAvailable ? proxyContract : currentAddress; + const sender = proxyContract; const asset = await makeAsset(assetAddress); return { steps, + retryWithMetaMaskStep: withdrawSteps.metamask.slice(-1)[0], assetAddress, asset, currentAddress, @@ -43,6 +44,7 @@ const Withdraw = ({ spender: sender, sender, numberOfInputNotes, + isGSNAvailable, }; }; diff --git a/packages/extension/src/ui/steps/withdraw.js b/packages/extension/src/ui/steps/withdraw.js index cc2c6c56c..020874282 100644 --- a/packages/extension/src/ui/steps/withdraw.js +++ b/packages/extension/src/ui/steps/withdraw.js @@ -19,23 +19,13 @@ const stepSignNotes = { tasks: [ { type: 'sign', - run: apis.note.signNotes, + run: apis.note.signProof, }, ], autoStart: true, submitTextKey: 'transaction.sign.submit', }; -const stepSignNotesForGSN = { - ...stepSignNotes, - tasks: [ - { - type: 'sign', - run: apis.note.signProof, - }, - ], -}; - const stepConfirm = { name: 'confirm', blockStyle: 'collapsed', @@ -65,7 +55,7 @@ const stepSend = { { titleKey: 'withdraw.send.step', type: 'sign', - run: apis.asset.confidentialTransfer, + run: apis.asset.confidentialTransferFrom, }, { titleKey: 'transaction.confirmed', @@ -105,7 +95,7 @@ const stepSendViaGSN = { export default { gsn: [ stepApprove, - stepSignNotesForGSN, + stepSignNotes, stepConfirmViaGSN, stepSendViaGSN, ],