Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tx memo #347

Merged
merged 16 commits into from
Dec 1, 2023
8 changes: 4 additions & 4 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@

<base href="%PUBLIC_URL%/" />
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
<!-- <script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-KH82ML5N');</script>
})(window, document, 'script', 'dataLayer', 'GTM-KH82ML5N');</script> -->
<!-- End Google Tag Manager -->
<title>Pyxis Safe</title>
</head>
Expand Down Expand Up @@ -62,8 +62,8 @@

<body style="background-color: rgba(18,18,18,1);">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KH82ML5N" height="0" width="0"
style="display:none;visibility:hidden"></iframe></noscript>
<!-- <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KH82ML5N" height="0" width="0"
style="display:none;visibility:hidden"></iframe></noscript> -->
<!-- End Google Tag Manager (noscript) -->
<img id="safe-preloader-animation" src="./resources/Logo.svg" />
<div id="root" style="overflow: hidden"></div>
Expand Down
13 changes: 13 additions & 0 deletions src/components/Input/TxMemo/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import TextField from '../TextField'

type Props = {
txMemo: string
setTxMemo: React.Dispatch<React.SetStateAction<string>>
}
const TxMemo = ({ txMemo, setTxMemo }: Props) => {
return (
<TextField placeholder="Transaction memo (optional)" label="Transaction memo" value={txMemo} onChange={setTxMemo} />
)
}

export default TxMemo
2 changes: 0 additions & 2 deletions src/components/JsonschemaForm/Field.tsx
Original file line number Diff line number Diff line change
@@ -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' ||
Expand Down
7 changes: 7 additions & 0 deletions src/components/Popup/MultiSendPopup/CreateTxPopup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { RecipientProps } from '.'
import { Popup } from '..'
import Header from '../Header'
import { Footer, Wrapper } from './styles'
import TxMemo from 'src/components/Input/TxMemo'

export default function CreateTxPopup({
open,
Expand Down Expand Up @@ -48,6 +49,7 @@ export default function CreateTxPopup({
const [openGasInput, setOpenGasInput] = useState<boolean>(false)
const [totalAmount, setTotalAmount] = useState('0')
const [sequence, setSequence] = useState(nextQueueSeq)
const [txMemo, setTxMemo] = useState<string>('')

useEffect(() => {
if (gasUsed != '0') {
Expand Down Expand Up @@ -87,12 +89,14 @@ export default function CreateTxPopup({
manualGasLimit || '250000',
sequence,
undefined,
txMemo,
() => {
setDisabled(true)
},
() => {
setDisabled(false)
handleClose()
setTxMemo('')
},
() => {
setDisabled(false)
Expand All @@ -109,6 +113,7 @@ export default function CreateTxPopup({
onClose={() => {
setDisabled(false)
handleClose()
setTxMemo('')
}}
/>
<Wrapper>
Expand Down Expand Up @@ -142,6 +147,8 @@ export default function CreateTxPopup({
sequence={sequence}
setSequence={setSequence}
/>
<Gap height={24} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Divider />

<Amount
Expand Down
31 changes: 24 additions & 7 deletions src/components/Popup/SendingPopup/CreateTxPopup.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import { coins } from '@cosmjs/stargate'
import BigNumber from 'bignumber.js'
import { useEffect, useState } from 'react'
import { useDispatch, useSelector } from 'react-redux'
import { useDispatch } from 'react-redux'
import AddressInfo from 'src/components/AddressInfo'
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 Loader from 'src/components/Loader'
import Amount from 'src/components/TxComponents/Amount'
import { getChainDefaultGasPrice, getCoinDecimal, getCoinMinimalDenom, getNativeCurrency } from 'src/config'
import { getChainDefaultGasPrice, getCoinDecimal, getCoinMinimalDenom } from 'src/config'
import { AddressBookEntry } from 'src/logic/addressBook/model/addressBook'
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 { Token } from 'src/logic/tokens/store/model/token'
import { extractSafeAddress } from 'src/routes/routes'
import { convertAmount, formatNativeCurrency, formatWithComma } from 'src/utils'
Expand All @@ -38,8 +38,6 @@ export default function CreateTxPopup({
gasUsed: string
}) {
const safeAddress = extractSafeAddress()
const nativeCurrency = getNativeCurrency()
const { nativeBalance: balance } = useSelector(currentSafeWithNames)
const dispatch = useDispatch()
const denom = getCoinMinimalDenom()
const chainDefaultGasPrice = getChainDefaultGasPrice()
Expand All @@ -49,6 +47,7 @@ export default function CreateTxPopup({
const [gasPriceFormatted, setGasPriceFormatted] = useState(gasFee)
const [openGasInput, setOpenGasInput] = useState<boolean>(false)
const [isDisabled, setDisabled] = useState(false)
const [txMemo, setTxMemo] = useState<string>('')

const [sequence, setSequence] = useState('1')

Expand Down Expand Up @@ -95,12 +94,14 @@ export default function CreateTxPopup({
manualGasLimit,
sequence,
recipient?.address,
txMemo,
() => {
setDisabled(true)
},
() => {
setDisabled(false)
handleClose()
setTxMemo('')
},
() => {
setDisabled(false)
Expand All @@ -110,8 +111,22 @@ export default function CreateTxPopup({
}

return (
<Popup open={open} handleClose={() => handleClose()} title="">
<Header subTitle="Step 2 of 2" title="Send funds" onClose={() => handleClose()} />
<Popup
open={open}
handleClose={() => {
handleClose()
setTxMemo('')
}}
title=""
>
<Header
subTitle="Step 2 of 2"
title="Send funds"
onClose={() => {
handleClose()
setTxMemo('')
}}
/>
<Wrapper>
<AddressInfo address={safeAddress} />
<div className="balance">
Expand All @@ -135,6 +150,8 @@ export default function CreateTxPopup({
sequence={sequence}
setSequence={setSequence}
/>
<Gap height={24} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Divider />

<Amount
Expand Down
6 changes: 3 additions & 3 deletions src/components/ReviewInfoText/index.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import styled from 'styled-components'
import { Text } from '@aura/safe-react-components'
import { useSelector } from 'react-redux'
import styled from 'styled-components'

import { useState } from 'react'
import Paragraph from 'src/components/layout/Paragraph'
import { EstimationStatus } from 'src/logic/hooks/useEstimateTransactionGas'
import { currentSafe } from 'src/logic/safe/store/selectors'
import { getLastTxNonce } from 'src/logic/safe/store/selectors/gatewayTransactions'
import { TransactionFees } from '../TransactionsFees'
import { useState } from 'react'
import { EstimationStatus } from 'src/logic/hooks/useEstimateTransactionGas'

type CustomReviewInfoTextProps = {
safeNonce?: string
Expand Down
1 change: 1 addition & 0 deletions src/logic/safe/store/actions/fetchTransactionDetails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ export const fetchTransactionDetailsById =
autoClaimAmount: Data?.AutoClaimAmount,
sequence: Data?.Sequence,
logs: Data?.Logs,
txMemo: Data?.Memo,
}

dispatch(
Expand Down
14 changes: 9 additions & 5 deletions src/pages/Avanced/Custom Transaction/ReviewPopup.tsx
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -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()
Expand All @@ -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<string>('')

useEffect(() => {
if (gasUsed) {
Expand Down Expand Up @@ -77,6 +78,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, msg }) {
manualGasLimit || '250000',
sequence,
undefined,
txMemo,
() => {
setDisabled(true)
},
Expand Down Expand Up @@ -122,6 +124,8 @@ export default function ReviewPopup({ open, setOpen, gasUsed, msg }) {
sequence={sequence}
setSequence={setSequence}
/>
<Gap height={24} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Divider />
<Amount
amount={formatNativeCurrency(
Expand Down
6 changes: 6 additions & 0 deletions src/pages/SmartContract/ContractInteraction/ReviewPopup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import { convertAmount, formatNativeCurrency } from 'src/utils'
import { signAndCreateTransaction } from 'src/utils/signer'
import { Wrap } from './styles'
import { IFund } from 'src/components/JsonschemaForm/FundForm'
import Gap from 'src/components/Gap'
import TxMemo from 'src/components/Input/TxMemo'

export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData }) {
const safeAddress = extractSafeAddress()
Expand All @@ -35,6 +37,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData
const [openGasInput, setOpenGasInput] = useState<boolean>(false)
const [sequence, setSequence] = useState('0')
const [isDisabled, setDisabled] = useState(false)
const [txMemo, setTxMemo] = useState<string>('')

useEffect(() => {
if (gasUsed) {
Expand Down Expand Up @@ -72,6 +75,7 @@ export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData
manualGasLimit || '250000',
sequence,
undefined,
txMemo,
() => {
setDisabled(true)
},
Expand Down Expand Up @@ -116,6 +120,8 @@ export default function ReviewPopup({ open, setOpen, gasUsed, data, contractData
sequence={sequence}
setSequence={setSequence}
/>
<Gap height={24} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Divider />
<Amount
listTokens={contractData.funds}
Expand Down
5 changes: 5 additions & 0 deletions src/pages/Staking/TxActionModal/ClaimReward.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import calculateGasFee from 'src/logic/providers/utils/fee'
import { formatNativeCurrency } from 'src/utils'
import { signAndCreateTransaction } from 'src/utils/signer'
import { Wrapper } from './style'
import TxMemo from 'src/components/Input/TxMemo'

export default function ClaimReward({ listReward, onClose, gasUsed }) {
const dispatch = useDispatch()
Expand All @@ -27,6 +28,7 @@ export default function ClaimReward({ listReward, onClose, gasUsed }) {
const [openGasInput, setOpenGasInput] = useState<boolean>(false)
const [isDisabled, setDisabled] = useState(false)
const [sequence, setSequence] = useState('0')
const [txMemo, setTxMemo] = useState<string>('')

const signTransaction = async () => {
const msgs: any[] = listReward.map((item) => ({
Expand All @@ -42,6 +44,7 @@ export default function ClaimReward({ listReward, onClose, gasUsed }) {
manualGasLimit || '250000',
sequence,
undefined,
txMemo,
() => {
setDisabled(true)
},
Expand Down Expand Up @@ -79,6 +82,8 @@ export default function ClaimReward({ listReward, onClose, gasUsed }) {
setSequence={setSequence}
/>
<Gap height={16} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Gap height={16} />
<Amount amount={formatNativeCurrency(+gasPriceFormatted)} label="Total Allocation Amount" />
<div className="notice">
You’re about to create a transaction and will have to confirm it with your currently connected wallet.
Expand Down
5 changes: 5 additions & 0 deletions src/pages/Staking/TxActionModal/Delegate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -41,6 +42,7 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) {
const [openGasInput, setOpenGasInput] = useState<boolean>(false)
const [isDisabled, setDisabled] = useState(false)
const [sequence, setSequence] = useState('0')
const [txMemo, setTxMemo] = useState<string>('')

const signTransaction = async () => {
const msgs = [
Expand All @@ -59,6 +61,7 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) {
manualGasLimit || '250000',
sequence,
undefined,
txMemo,
() => {
setDisabled(true)
},
Expand Down Expand Up @@ -100,6 +103,8 @@ export default function Delegate({ validator, amount, onClose, gasUsed }) {
sequence={sequence}
setSequence={setSequence}
/>
<Gap height={24} />
<TxMemo txMemo={txMemo} setTxMemo={setTxMemo} />
<Divider />
<Amount amount={formatNativeCurrency(+gasPriceFormatted)} label="Total Allocation Amount" />
<div className="notice">
Expand Down
Loading