diff --git a/src/components/FeeAndSequence/index.tsx b/src/components/FeeAndSequence/index.tsx index 247b980cc3..119cf8a8bd 100644 --- a/src/components/FeeAndSequence/index.tsx +++ b/src/components/FeeAndSequence/index.tsx @@ -31,6 +31,7 @@ export default function FeeAndSequence({ useEffect(() => { setSequence(nextQueueSeq) }, [nextQueueSeq]) + useEffect(() => { recalculateFee() }, [manualGasLimit]) diff --git a/src/logic/safe/store/actions/fetchSafe.ts b/src/logic/safe/store/actions/fetchSafe.ts index 1774f82ff0..ea91a0eab7 100644 --- a/src/logic/safe/store/actions/fetchSafe.ts +++ b/src/logic/safe/store/actions/fetchSafe.ts @@ -13,7 +13,7 @@ import { SafeRecordProps } from 'src/logic/safe/store/models/safe' import { getLocalSafe } from 'src/logic/safe/utils' import { getSafeInfo } from 'src/logic/safe/utils/safeInformation' import { fetchMSafeTokens } from 'src/logic/tokens/store/actions/fetchSafeTokens' -import { fetchAccountInfo, getAccountAsset, getMSafeInfo } from 'src/services' +import { fetchAccountInfo, getAccountAsset, getMSafeInfo, getMSafeNextSeq } from 'src/services' import { IMSafeInfo } from 'src/types/safe' import { humanReadableValue } from 'src/utils' import { checksumAddress } from 'src/utils/checksumAddress' @@ -143,9 +143,10 @@ export const fetchMSafe = let mSafeInfo: IMSafeInfo | null = null let accountInfo: SequenceResponse | null = null let isSafeLoaded = false + let nextQueueSeq = '' try { - ;[mSafeInfo, remoteSafeInfo, accountInfo, isSafeLoaded] = await _getSafeInfo(safeAddress, safeId) + ;[mSafeInfo, remoteSafeInfo, accountInfo, isSafeLoaded, nextQueueSeq] = await _getSafeInfo(safeAddress, safeId) } catch (err) { console.error(err) } @@ -164,7 +165,7 @@ export const fetchMSafe = safeInfo = await extractRemoteSafeInfo(remoteSafeInfo) const onlineData: SequenceResponse | null = accountInfo - safeInfo.nextQueueSeq = mSafeInfo?.nextQueueSeq || onlineData?.sequence?.toString() + safeInfo.nextQueueSeq = nextQueueSeq || onlineData?.sequence?.toString() safeInfo.sequence = mSafeInfo?.sequence || onlineData?.sequence?.toString() const coinDecimal = getCoinDecimal() const { txQueuedTag, txHistoryTag, balances } = currentSafeWithNames(state) @@ -217,18 +218,25 @@ export const fetchMSafe = async function _getSafeInfo( safeAddress: string, safeId: number, -): Promise<[IMSafeInfo, SafeInfo, SequenceResponse, boolean]> { +): Promise<[IMSafeInfo, SafeInfo, SequenceResponse, boolean, string]> { const getAccountAssetPromise = getAccountAsset(safeAddress) const getMSafeInfoPromise = getMSafeInfo(safeId) const getAccountInfoPromise = fetchAccountInfo(safeAddress) + const getMSafeNextSeqPromise = getMSafeNextSeq(safeId) - const results = await Promise.allSettled([getAccountAssetPromise, getMSafeInfoPromise, getAccountInfoPromise]) + const results = await Promise.allSettled([ + getAccountAssetPromise, + getMSafeInfoPromise, + getAccountInfoPromise, + getMSafeNextSeqPromise, + ]) - const [accountAssetDataResult, mSafeInfotDataResult, accountInfoDataResult] = results + const [accountAssetDataResult, mSafeInfotDataResult, accountInfoDataResult, nextQueueSeqResult] = results const accountAssetData = accountAssetDataResult.status === 'fulfilled' ? accountAssetDataResult.value : null const mSafeInfotData = mSafeInfotDataResult.status === 'fulfilled' ? mSafeInfotDataResult.value : null const accountInfoData = accountInfoDataResult.status === 'fulfilled' ? accountInfoDataResult.value : null + const nextQueueSeq = nextQueueSeqResult.status === 'fulfilled' ? nextQueueSeqResult.value : '' if (!mSafeInfotData) { throw new Error('Get Safe Info failed') @@ -316,5 +324,5 @@ async function _getSafeInfo( txHistoryTag: mSafeInfotData.txHistoryTag, } - return [formatMSafeInfotData, safeInfoData, accountInfoData, isSafeLoaded] + return [formatMSafeInfotData, safeInfoData, accountInfoData, isSafeLoaded, nextQueueSeq] } diff --git a/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx b/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx index 330cd1c7c9..a7f24df1df 100644 --- a/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx +++ b/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx @@ -133,10 +133,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx b/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx index b37d138914..fa3d53edfc 100644 --- a/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx +++ b/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx @@ -143,10 +143,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx b/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx index 0b9c16b7ce..f21dbccc7d 100644 --- a/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx +++ b/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx @@ -168,10 +168,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/Delegate/index.tsx b/src/pages/Transactions/TxActionModal/Delegate/index.tsx index 2299d56d7f..8e3f0da776 100644 --- a/src/pages/Transactions/TxActionModal/Delegate/index.tsx +++ b/src/pages/Transactions/TxActionModal/Delegate/index.tsx @@ -147,10 +147,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/MultiSend/index.tsx b/src/pages/Transactions/TxActionModal/MultiSend/index.tsx index c44a108ce8..c2626857ca 100644 --- a/src/pages/Transactions/TxActionModal/MultiSend/index.tsx +++ b/src/pages/Transactions/TxActionModal/MultiSend/index.tsx @@ -152,10 +152,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/Redelegate/index.tsx b/src/pages/Transactions/TxActionModal/Redelegate/index.tsx index 776abe2bdf..1fda20a74d 100644 --- a/src/pages/Transactions/TxActionModal/Redelegate/index.tsx +++ b/src/pages/Transactions/TxActionModal/Redelegate/index.tsx @@ -154,10 +154,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/Send/index.tsx b/src/pages/Transactions/TxActionModal/Send/index.tsx index 9be57618b3..c5e5daeeb2 100644 --- a/src/pages/Transactions/TxActionModal/Send/index.tsx +++ b/src/pages/Transactions/TxActionModal/Send/index.tsx @@ -141,10 +141,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/Undelegate/index.tsx b/src/pages/Transactions/TxActionModal/Undelegate/index.tsx index 29cb896428..ac68401106 100644 --- a/src/pages/Transactions/TxActionModal/Undelegate/index.tsx +++ b/src/pages/Transactions/TxActionModal/Undelegate/index.tsx @@ -150,10 +150,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/pages/Transactions/TxActionModal/Vote/index.tsx b/src/pages/Transactions/TxActionModal/Vote/index.tsx index f5199a2c8a..7b62136142 100644 --- a/src/pages/Transactions/TxActionModal/Vote/index.tsx +++ b/src/pages/Transactions/TxActionModal/Vote/index.tsx @@ -147,10 +147,10 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable action == 'confirm' ? txHandler('confirm') : action == 'reject' - ? rejectTx() - : action == 'change-sequence' - ? txHandler('change-sequence') - : sendTx() + ? rejectTx() + : action == 'change-sequence' + ? txHandler('change-sequence') + : sendTx() }} disabled={disabled || +sequence < +currentSequence} > diff --git a/src/services/index.ts b/src/services/index.ts index e58bac93a9..ddddf8efed 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -161,6 +161,10 @@ export async function getMSafeInfo(safeId: number): Promise { return axios.get(`${baseUrl}/multisigwallet/${safeId}`).then((res) => res.data.Data) } +export async function getMSafeNextSeq(safeId: number): Promise { + return axios.get(`${baseUrl}/transaction/next-seq?safeId=${safeId}`).then((res) => res.data.nextSequence) +} + export async function getAccountAsset(safeAddress: string): Promise { const chainInfo = getChainInfo() as any return axios