From fa96a35985ab62fe208a855d1c8c66c2839ca75e Mon Sep 17 00:00:00 2001 From: jinoosss Date: Wed, 19 Feb 2025 22:51:58 +0900 Subject: [PATCH] fix: fix a out of gas error --- .../wallet/transaction-gas/use-get-estimate-gas-info.ts | 4 ++-- .../adena-extension/src/hooks/wallet/use-network-fee.ts | 6 +++--- .../adena-extension/src/inject/message/command-handler.ts | 5 ++++- .../pages/popup/wallet/approve-transaction-main/index.tsx | 6 +++++- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/adena-extension/src/hooks/wallet/transaction-gas/use-get-estimate-gas-info.ts b/packages/adena-extension/src/hooks/wallet/transaction-gas/use-get-estimate-gas-info.ts index cc0a510d..e026660b 100644 --- a/packages/adena-extension/src/hooks/wallet/transaction-gas/use-get-estimate-gas-info.ts +++ b/packages/adena-extension/src/hooks/wallet/transaction-gas/use-get-estimate-gas-info.ts @@ -30,7 +30,7 @@ function makeGasInfoBy( } const gasWantedBN = BigNumber(gasUsed).multipliedBy(safetyMargin); - const gasFeeBN = gasWantedBN.multipliedBy(gasPrice); + const gasFeeBN = BigNumber(gasUsed).multipliedBy(gasPrice); return { gasWanted: Number(gasWantedBN.toFixed(0, BigNumber.ROUND_DOWN)), @@ -81,7 +81,7 @@ export const useGetEstimateGasInfo = ( return null; } - const modifiedDocument = modifyDocument(document, gasWanted, gasFee); + const modifiedDocument = modifyDocument(document, gasWanted * 100, gasFee); const result = await transactionGasService .estimateGas(documentToDefaultTx(modifiedDocument)) diff --git a/packages/adena-extension/src/hooks/wallet/use-network-fee.ts b/packages/adena-extension/src/hooks/wallet/use-network-fee.ts index 3ef2caaf..53b96705 100644 --- a/packages/adena-extension/src/hooks/wallet/use-network-fee.ts +++ b/packages/adena-extension/src/hooks/wallet/use-network-fee.ts @@ -73,7 +73,7 @@ export const useNetworkFee = ( const current = gasPriceTiers.find((setting) => setting.settingType === currentSettingType); return current?.gasInfo || null; - }, [currentSettingType, gasPriceTiers]); + }, [gasPriceTiers, currentSettingType]); const changedGasInfo = useMemo(() => { if (!gasPriceTiers) { @@ -86,7 +86,7 @@ export const useNetworkFee = ( }, [changedSettingType, gasPriceTiers]); const currentGasFeeRawAmount = useMemo(() => { - if (!selectedTier) { + if (!selectedTier && !currentGasInfo) { return BigNumber(document?.fee.amount?.[0].amount || 0).toNumber(); } @@ -97,7 +97,7 @@ export const useNetworkFee = ( const currentGasFeeAmount = BigNumber(currentGasInfo.gasFee).toFixed(0, BigNumber.ROUND_UP); return Number(currentGasFeeAmount); - }, [currentGasInfo, document, selectedTier]); + }, [currentGasInfo?.gasFee, document, selectedTier]); const networkFee = useMemo(() => { if (!currentGasInfo) { diff --git a/packages/adena-extension/src/inject/message/command-handler.ts b/packages/adena-extension/src/inject/message/command-handler.ts index 1b1667d5..59203e2d 100644 --- a/packages/adena-extension/src/inject/message/command-handler.ts +++ b/packages/adena-extension/src/inject/message/command-handler.ts @@ -1,3 +1,4 @@ +import { DEFAULT_GAS_WANTED } from '@common/constants/tx.constant'; import { MemoryProvider } from '@common/provider/memory/memory-provider'; import { AdenaExecutor } from '@inject/executor'; import { ContractMessage, TransactionParams } from '@inject/types'; @@ -125,7 +126,7 @@ function makeTransactionMessage( gnoMessageInfo: GnoMessageInfo, // eslint-disable-next-line @typescript-eslint/no-unused-vars gnoConnectInfo: GnoConnectInfo, -): TransactionParams { +): TransactionParams & { gasFee: number; gasWanted: number } { const messages: ContractMessage[] = [ { type: '/vm.m_call', @@ -141,5 +142,7 @@ function makeTransactionMessage( return { messages, + gasFee: 0, + gasWanted: DEFAULT_GAS_WANTED, }; } diff --git a/packages/adena-extension/src/pages/popup/wallet/approve-transaction-main/index.tsx b/packages/adena-extension/src/pages/popup/wallet/approve-transaction-main/index.tsx index 7b79d29a..c5e72bc1 100644 --- a/packages/adena-extension/src/pages/popup/wallet/approve-transaction-main/index.tsx +++ b/packages/adena-extension/src/pages/popup/wallet/approve-transaction-main/index.tsx @@ -380,7 +380,11 @@ const ApproveTransactionContainer: React.FC = () => { useEffect(() => { updateTransactionData(); - }, [memo, useNetworkFeeReturn.currentGasInfo]); + }, [ + memo, + useNetworkFeeReturn.currentGasInfo?.gasWanted, + useNetworkFeeReturn.currentGasFeeRawAmount, + ]); const onClickCancel = (): void => { chrome.runtime.sendMessage(