From a100bdd5726d7ba92db1a57e8a45b96be7af9ac3 Mon Sep 17 00:00:00 2001 From: HoangNDM Date: Thu, 23 Nov 2023 10:57:00 +0700 Subject: [PATCH] add tx memo --- src/components/JsonschemaForm/Field.tsx | 2 -- .../Custom Transaction/ReviewPopup.tsx | 15 ++++++----- .../ContractInteraction/ReviewPopup.tsx | 7 ++++- .../Staking/TxActionModal/ClaimReward.tsx | 6 ++++- src/pages/Staking/TxActionModal/Delegate.tsx | 6 ++++- .../Staking/TxActionModal/Redelegate.tsx | 6 ++++- .../Staking/TxActionModal/Undelegate.tsx | 16 +++++------- .../TxActionModal/ClaimReward/index.tsx | 26 +++++++------------ .../ContractInteraction/index.tsx | 11 +++++--- .../TxActionModal/CustomTransaction/index.tsx | 10 ++++--- .../TxActionModal/Delegate/index.tsx | 12 +++++---- .../TxActionModal/MultiSend/index.tsx | 2 +- .../TxActionModal/Redelegate/index.tsx | 10 ++++--- .../Transactions/TxActionModal/Send/index.tsx | 2 +- .../TxActionModal/Undelegate/index.tsx | 11 +++++--- .../Transactions/TxActionModal/Vote/index.tsx | 10 ++++--- .../Transactions/components/TxQuickAction.tsx | 1 - src/utils/signer.ts | 1 + 18 files changed, 93 insertions(+), 61 deletions(-) diff --git a/src/components/JsonschemaForm/Field.tsx b/src/components/JsonschemaForm/Field.tsx index 55afeccae2..c8fbe48475 100644 --- a/src/components/JsonschemaForm/Field.tsx +++ b/src/components/JsonschemaForm/Field.tsx @@ -1,7 +1,5 @@ -import styled from 'styled-components' import TextField from '../Input/TextField' -const Wrap = styled.div`` export default function Field({ fieldSchema, value, onChange, errorMsg }) { if ( fieldSchema.type == 'integer' || diff --git a/src/pages/Avanced/Custom Transaction/ReviewPopup.tsx b/src/pages/Avanced/Custom Transaction/ReviewPopup.tsx index 2475a6e694..5637a6a287 100644 --- a/src/pages/Avanced/Custom Transaction/ReviewPopup.tsx +++ b/src/pages/Avanced/Custom Transaction/ReviewPopup.tsx @@ -1,6 +1,7 @@ import BigNumber from 'bignumber.js' import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' +import AlertIcon from 'src/assets/icons/alert.svg' import AddressInfo from 'src/components/AddressInfo' import { FilledButton, OutlinedNeutralButton } from 'src/components/Button' import { Message } from 'src/components/CustomTransactionMessage/SmallMsg' @@ -10,16 +11,17 @@ import { Popup } from 'src/components/Popup' import Footer from 'src/components/Popup/Footer' import Header from 'src/components/Popup/Header' import Amount from 'src/components/TxComponents/Amount' -import { getChainDefaultGasPrice, getChainInfo, getCoinDecimal, getNativeCurrency } from 'src/config' +import { getChainDefaultGasPrice, getCoinDecimal, getNativeCurrency } from 'src/config' import { MsgTypeUrl } from 'src/logic/providers/constants/constant' import calculateGasFee from 'src/logic/providers/utils/fee' import { currentSafeWithNames } from 'src/logic/safe/store/selectors' -import { userAccountSelector } from 'src/logic/wallets/store/selectors' import { extractSafeAddress } from 'src/routes/routes' import { formatNativeCurrency, formatNumber } from 'src/utils' import { signAndCreateTransaction } from 'src/utils/signer' +import TxMemo from 'src/components/Input/TxMemo' import { Wrap } from './styles' -import AlertIcon from 'src/assets/icons/alert.svg' +import Gap from 'src/components/Gap' + export default function ReviewPopup({ open, setOpen, gasUsed, msg }) { const safeAddress = extractSafeAddress() const dispatch = useDispatch() @@ -39,8 +41,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, msg }) { const [sequence, setSequence] = useState('0') const [isDisabled, setDisabled] = useState(false) const [amount, setAmount] = useState('0') - const userWalletAddress = useSelector(userAccountSelector) - const chainInfo = getChainInfo() + const [txMemo, setTxMemo] = useState('') useEffect(() => { if (gasUsed) { @@ -77,7 +78,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, msg }) { manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -123,6 +124,8 @@ export default function ReviewPopup({ open, setOpen, gasUsed, msg }) { sequence={sequence} setSequence={setSequence} /> + + (false) const [sequence, setSequence] = useState('0') const [isDisabled, setDisabled] = useState(false) + const [txMemo, setTxMemo] = useState('') useEffect(() => { if (gasUsed) { @@ -72,7 +75,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -117,6 +120,8 @@ export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData sequence={sequence} setSequence={setSequence} /> + + (false) const [isDisabled, setDisabled] = useState(false) const [sequence, setSequence] = useState('0') + const [txMemo, setTxMemo] = useState('') const signTransaction = async () => { const msgs: any[] = listReward.map((item) => ({ @@ -42,7 +44,7 @@ export default function ClaimReward({ listReward, onClose, gasUsed }) { manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -80,6 +82,8 @@ export default function ClaimReward({ listReward, onClose, gasUsed }) { setSequence={setSequence} /> + +
You’re about to create a transaction and will have to confirm it with your currently connected wallet. diff --git a/src/pages/Staking/TxActionModal/Delegate.tsx b/src/pages/Staking/TxActionModal/Delegate.tsx index 7cba3c940a..d5d92688d9 100644 --- a/src/pages/Staking/TxActionModal/Delegate.tsx +++ b/src/pages/Staking/TxActionModal/Delegate.tsx @@ -18,6 +18,7 @@ import { convertAmount, formatNativeCurrency, formatNativeToken } from 'src/util import { signAndCreateTransaction } from 'src/utils/signer' import { Wrapper } from './style' import { DEFAULT_GAS_LIMIT } from 'src/services/constant/common' +import TxMemo from 'src/components/Input/TxMemo' export default function Delegate({ validator, amount, onClose, gasUsed }) { const safeAddress = extractSafeAddress() @@ -41,6 +42,7 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) { const [openGasInput, setOpenGasInput] = useState(false) const [isDisabled, setDisabled] = useState(false) const [sequence, setSequence] = useState('0') + const [txMemo, setTxMemo] = useState('') const signTransaction = async () => { const msgs = [ @@ -59,7 +61,7 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) { manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -101,6 +103,8 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) { sequence={sequence} setSequence={setSequence} /> + +
diff --git a/src/pages/Staking/TxActionModal/Redelegate.tsx b/src/pages/Staking/TxActionModal/Redelegate.tsx index d07f4eea7e..142d831be1 100644 --- a/src/pages/Staking/TxActionModal/Redelegate.tsx +++ b/src/pages/Staking/TxActionModal/Redelegate.tsx @@ -17,6 +17,7 @@ import { DEFAULT_GAS_LIMIT } from 'src/services/constant/common' import { convertAmount, formatNativeCurrency, formatNativeToken } from 'src/utils' import { signAndCreateTransaction } from 'src/utils/signer' import { Wrapper } from './style' +import TxMemo from 'src/components/Input/TxMemo' export default function Redelegate({ validator, amount, onClose, dstValidator, gasUsed }) { const safeAddress = extractSafeAddress() @@ -45,6 +46,7 @@ export default function Redelegate({ validator, amount, onClose, dstValidator, g const [openGasInput, setOpenGasInput] = useState(false) const [isDisabled, setDisabled] = useState(false) const [sequence, setSequence] = useState('0') + const [txMemo, setTxMemo] = useState('') const signTransaction = async () => { const msgs = [ @@ -64,7 +66,7 @@ export default function Redelegate({ validator, amount, onClose, dstValidator, g manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -107,6 +109,8 @@ export default function Redelegate({ validator, amount, onClose, dstValidator, g sequence={sequence} setSequence={setSequence} /> + +
diff --git a/src/pages/Staking/TxActionModal/Undelegate.tsx b/src/pages/Staking/TxActionModal/Undelegate.tsx index e98305e651..5ce832ac38 100644 --- a/src/pages/Staking/TxActionModal/Undelegate.tsx +++ b/src/pages/Staking/TxActionModal/Undelegate.tsx @@ -6,15 +6,10 @@ import { FilledButton, OutlinedNeutralButton } from 'src/components/Button' import Divider from 'src/components/Divider' import FeeAndSequence from 'src/components/FeeAndSequence' import Gap from 'src/components/Gap' +import TxMemo from 'src/components/Input/TxMemo' import Footer from 'src/components/Popup/Footer' import Amount from 'src/components/TxComponents/Amount' -import { - getChainDefaultGas, - getChainDefaultGasPrice, - getCoinDecimal, - getCoinMinimalDenom, - getNativeCurrency, -} from 'src/config' +import { getChainDefaultGas, getChainDefaultGasPrice, getCoinDecimal, getCoinMinimalDenom } from 'src/config' import { allDelegation } from 'src/logic/delegation/store/selectors' import { MsgTypeUrl } from 'src/logic/providers/constants/constant' import calculateGasFee from 'src/logic/providers/utils/fee' @@ -33,7 +28,6 @@ export default function Undelegate({ validator, amount, onClose, gasUsed }) { const stakedAmount = delegations?.find( (delegation: any) => delegation.operatorAddress == validator.safeStaking, )?.staked - const nativeCurrency = getNativeCurrency() const denom = getCoinMinimalDenom() const chainDefaultGas = getChainDefaultGas() const chainDefaultGasPrice = getChainDefaultGasPrice() @@ -51,6 +45,8 @@ export default function Undelegate({ validator, amount, onClose, gasUsed }) { const [openGasInput, setOpenGasInput] = useState(false) const [isDisabled, setDisabled] = useState(false) const [sequence, setSequence] = useState('0') + const [txMemo, setTxMemo] = useState('') + const signTransaction = async () => { const msgs = [ { @@ -68,7 +64,7 @@ export default function Undelegate({ validator, amount, onClose, gasUsed }) { manualGasLimit || '250000', sequence, undefined, - undefined, + txMemo, () => { setDisabled(true) }, @@ -110,6 +106,8 @@ export default function Undelegate({ validator, amount, onClose, gasUsed }) { sequence={sequence} setSequence={setSequence} /> + +
diff --git a/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx b/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx index 2bc01e3160..8cb43f467b 100644 --- a/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx +++ b/src/pages/Transactions/TxActionModal/ClaimReward/index.tsx @@ -7,35 +7,25 @@ import { Popup } from 'src/components/Popup' import Footer from 'src/components/Popup/Footer' import Header from 'src/components/Popup/Header' import { getCoinMinimalDenom } from 'src/config' -import { userAccountSelector } from 'src/logic/wallets/store/selectors' - import AddressInfo from 'src/components/AddressInfo' import Amount from 'src/components/TxComponents/Amount' import { currentSafeWithNames } from 'src/logic/safe/store/selectors' import { formatNativeToken } from 'src/utils' import { signAndChangeTransactionSequence, signAndConfirmTransaction } from 'src/utils/signer' import { getNotice, getTitle } from '..' +import TxMemo from 'src/components/Input/TxMemo' import { TxSignModalContext } from '../../Queue' import { ReviewTxPopupWrapper } from '../../styled' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' -export default function Execute({ - open, - onClose, - data, - sendTx, - rejectTx, - disabled, - setDisabled, - - deleteTx, -}) { +export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) - const userWalletAddress = useSelector(userAccountSelector) const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) + + const { sequence: currentSequence } = useSelector(currentSafeWithNames) const txHandler = async (type) => { if (type == 'confirm') { dispatch( @@ -47,7 +37,7 @@ export default function Execute({ gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -70,7 +60,7 @@ export default function Execute({ gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -126,6 +116,8 @@ export default function Execute({ )} + + )} diff --git a/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx b/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx index 4dde0e77cf..d27d2701ce 100644 --- a/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx +++ b/src/pages/Transactions/TxActionModal/ContractInteraction/index.tsx @@ -19,11 +19,14 @@ import { signAndChangeTransactionSequence, signAndConfirmTransaction } from 'src import { getNotice, getTitle } from '..' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' +import TxMemo from '../../../../components/Input/TxMemo' + export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { nativeBalance: balance, sequence: currentSequence } = useSelector(currentSafeWithNames) const { action } = useContext(TxSignModalContext) const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) const txHandler = async (type) => { if (type == 'confirm') { @@ -36,7 +39,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -59,7 +62,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -122,6 +125,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + diff --git a/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx b/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx index dc5ab7d7d3..cbb251a53f 100644 --- a/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx +++ b/src/pages/Transactions/TxActionModal/CustomTransaction/index.tsx @@ -23,14 +23,16 @@ import { signAndChangeTransactionSequence, signAndConfirmTransaction } from 'src import { getNotice, getTitle } from '..' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' +import TxMemo from 'src/components/Input/TxMemo' export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { nativeBalance: balance, sequence: currentSequence } = useSelector(currentSafeWithNames) const { action } = useContext(TxSignModalContext) const [sequence, setSequence] = useState(data?.txSequence) const safeAddress = extractSafeAddress() const dispatch = useDispatch() const [amount, setAmount] = useState('0') + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) useEffect(() => { let newTotalAmount = new BigNumber(0) @@ -59,7 +61,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -82,7 +84,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -145,6 +147,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + delegation.operatorAddress == data?.txDetails?.txMessage[0]?.validatorAddress, )?.staked - const userWalletAddress = useSelector(userAccountSelector) const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) const txHandler = async (type) => { if (type == 'confirm') { @@ -44,7 +44,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -67,7 +67,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -128,6 +128,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + diff --git a/src/pages/Transactions/TxActionModal/MultiSend/index.tsx b/src/pages/Transactions/TxActionModal/MultiSend/index.tsx index 63234c1717..b755566b04 100644 --- a/src/pages/Transactions/TxActionModal/MultiSend/index.tsx +++ b/src/pages/Transactions/TxActionModal/MultiSend/index.tsx @@ -24,7 +24,7 @@ import { DeleteButton, TxContent } from '../styles' export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { nativeBalance: balance, sequence: currentSequence } = useSelector(currentSafeWithNames) const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) diff --git a/src/pages/Transactions/TxActionModal/Redelegate/index.tsx b/src/pages/Transactions/TxActionModal/Redelegate/index.tsx index a4377146f1..a335ff1c0c 100644 --- a/src/pages/Transactions/TxActionModal/Redelegate/index.tsx +++ b/src/pages/Transactions/TxActionModal/Redelegate/index.tsx @@ -20,11 +20,12 @@ import { TxSignModalContext } from '../../Queue' import { ReviewTxPopupWrapper } from '../../styled' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' +import TxMemo from 'src/components/Input/TxMemo' export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) const delegations = useSelector(allDelegation) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { sequence: currentSequence } = useSelector(currentSafeWithNames) const srcValidatorStakedAmount = delegations?.find( (delegation: any) => delegation.operatorAddress == data?.txDetails?.txMessage[0]?.validatorSrcAddress, )?.staked @@ -33,6 +34,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )?.staked const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) const txHandler = async (type) => { if (type == 'confirm') { @@ -45,7 +47,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -68,7 +70,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -133,6 +135,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + diff --git a/src/pages/Transactions/TxActionModal/Send/index.tsx b/src/pages/Transactions/TxActionModal/Send/index.tsx index 44db8630de..1be2f63cb8 100644 --- a/src/pages/Transactions/TxActionModal/Send/index.tsx +++ b/src/pages/Transactions/TxActionModal/Send/index.tsx @@ -23,7 +23,7 @@ import { DeleteButton, TxContent } from '../styles' export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { nativeBalance: balance, sequence: currentSequence } = useSelector(currentSafeWithNames) const dispatch = useDispatch() const [sequence, setSequence] = useState(data?.txSequence) const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) diff --git a/src/pages/Transactions/TxActionModal/Undelegate/index.tsx b/src/pages/Transactions/TxActionModal/Undelegate/index.tsx index 20ad80e63f..accc946f58 100644 --- a/src/pages/Transactions/TxActionModal/Undelegate/index.tsx +++ b/src/pages/Transactions/TxActionModal/Undelegate/index.tsx @@ -20,13 +20,16 @@ import { TxSignModalContext } from '../../Queue' import { ReviewTxPopupWrapper } from '../../styled' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' +import TxMemo from '../../../../components/Input/TxMemo' export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const { nativeBalance: balance, sequence: currentSequence } = useSelector(currentSafeWithNames) const delegations = useSelector(allDelegation) const [sequence, setSequence] = useState(data?.txSequence) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) + const stakedAmount = delegations?.find( (delegation: any) => delegation.operatorAddress == data?.txDetails?.txMessage[0]?.validatorAddress, )?.staked @@ -44,7 +47,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -67,7 +70,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -128,6 +131,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + diff --git a/src/pages/Transactions/TxActionModal/Vote/index.tsx b/src/pages/Transactions/TxActionModal/Vote/index.tsx index da4ba22a77..8b7375e2ae 100644 --- a/src/pages/Transactions/TxActionModal/Vote/index.tsx +++ b/src/pages/Transactions/TxActionModal/Vote/index.tsx @@ -18,6 +18,7 @@ import { TxSignModalContext } from '../../Queue' import { ReviewTxPopupWrapper } from '../../styled' import EditSequence from '../EditSequence' import { DeleteButton, TxContent } from '../styles' +import TxMemo from '../../../../components/Input/TxMemo' const voteMapping = { 1: 'Yes', @@ -29,7 +30,8 @@ const voteMapping = { export default function Execute({ open, onClose, data, sendTx, rejectTx, disabled, setDisabled, deleteTx }) { const { action } = useContext(TxSignModalContext) const [sequence, setSequence] = useState(data?.txSequence) - const { nativeBalance: balance, nextQueueSeq, sequence: currentSequence } = useSelector(currentSafeWithNames) + const [txMemo, setTxMemo] = useState(data?.txDetails?.txMemo) + const { sequence: currentSequence } = useSelector(currentSafeWithNames) const dispatch = useDispatch() const txHandler = async (type) => { @@ -43,7 +45,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -66,7 +68,7 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable gas: data?.txDetails?.gas.toString(), }, sequence, - undefined, + txMemo, () => { setDisabled(true) }, @@ -128,6 +130,8 @@ export default function Execute({ open, onClose, data, sendTx, rejectTx, disable )} + + )} diff --git a/src/pages/Transactions/components/TxQuickAction.tsx b/src/pages/Transactions/components/TxQuickAction.tsx index 9a5d67ed2b..ec04cd42f4 100644 --- a/src/pages/Transactions/components/TxQuickAction.tsx +++ b/src/pages/Transactions/components/TxQuickAction.tsx @@ -31,7 +31,6 @@ const Wrap = styled.div` export default function TxQuickAction({ transaction, curSeq }) { const userWalletAddress = useSelector(userAccountSelector) - const chainInfo = getChainInfo() const safeAddress = extractSafeAddress() const granted = useSelector(grantedSelector) const [loading, setLoading] = useState(false) diff --git a/src/utils/signer.ts b/src/utils/signer.ts index 8303f9307c..90fb6d1e4d 100644 --- a/src/utils/signer.ts +++ b/src/utils/signer.ts @@ -47,6 +47,7 @@ import { MESSAGES_CODE } from 'src/services/constant/message' import { ICreateSafeTransaction } from 'src/types/transaction' import { calcFee } from 'src/utils' import { TxTypes } from './txTypes' + export const signAndCreateTransaction = ( message: any[],