1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

disable all inputs during submission in add/remove liquidity (#1062)

This commit is contained in:
Matthias Kretschmann 2022-02-04 18:21:35 +00:00 committed by GitHub
parent 24fd4de584
commit d51d909a66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 12 deletions

View File

@ -10,13 +10,15 @@ export default function TokenApproval({
disabled, disabled,
amount, amount,
tokenAddress, tokenAddress,
tokenSymbol tokenSymbol,
setSubmitting
}: { }: {
actionButton: JSX.Element actionButton: JSX.Element
disabled: boolean disabled: boolean
amount: string amount: string
tokenAddress: string tokenAddress: string
tokenSymbol: string tokenSymbol: string
setSubmitting?: (isSubmitting: boolean) => void
}): ReactElement { }): ReactElement {
const { asset, isAssetNetwork } = useAsset() const { asset, isAssetNetwork } = useAsset()
const [tokenApproved, setTokenApproved] = useState(false) const [tokenApproved, setTokenApproved] = useState(false)
@ -50,6 +52,7 @@ export default function TokenApproval({
async function approveTokens(amount: string) { async function approveTokens(amount: string) {
setLoading(true) setLoading(true)
setSubmitting(true)
try { try {
const tx = await approve(web3, accountId, tokenAddress, spender, amount) const tx = await approve(web3, accountId, tokenAddress, spender, amount)
@ -62,6 +65,7 @@ export default function TokenApproval({
} finally { } finally {
await checkTokenApproval() await checkTokenApproval()
setLoading(false) setLoading(false)
setSubmitting(false)
} }
} }

View File

@ -17,7 +17,8 @@ export default function Actions({
action, action,
isDisabled, isDisabled,
tokenAddress, tokenAddress,
tokenSymbol tokenSymbol,
setSubmitting
}: { }: {
isLoading: boolean isLoading: boolean
loaderMessage: string loaderMessage: string
@ -29,6 +30,7 @@ export default function Actions({
isDisabled?: boolean isDisabled?: boolean
tokenAddress: string tokenAddress: string
tokenSymbol: string tokenSymbol: string
setSubmitting?: (isSubmitting: boolean) => void
}): ReactElement { }): ReactElement {
const { networkId } = useWeb3() const { networkId } = useWeb3()
@ -55,6 +57,7 @@ export default function Actions({
tokenAddress={tokenAddress} tokenAddress={tokenAddress}
tokenSymbol={tokenSymbol} tokenSymbol={tokenSymbol}
disabled={isDisabled} disabled={isDisabled}
setSubmitting={setSubmitting}
/> />
) : ( ) : (
actionButton actionButton

View File

@ -39,8 +39,11 @@ export default function FormAdd({
const { isAssetNetwork } = useAsset() const { isAssetNetwork } = useAsset()
// Connect with form // Connect with form
const { setFieldValue, values }: FormikContextType<FormAddLiquidity> = const {
useFormikContext() setFieldValue,
values,
isSubmitting
}: FormikContextType<FormAddLiquidity> = useFormikContext()
useEffect(() => { useEffect(() => {
async function calculatePoolShares() { async function calculatePoolShares() {
@ -112,7 +115,7 @@ export default function FormAdd({
placeholder="0" placeholder="0"
field={field} field={field}
form={form} form={form}
disabled={!isAssetNetwork} disabled={!isAssetNetwork || isSubmitting}
/> />
)} )}
</Field> </Field>
@ -122,7 +125,7 @@ export default function FormAdd({
className={styles.buttonMax} className={styles.buttonMax}
style="text" style="text"
size="small" size="small"
disabled={!web3} disabled={!web3 || isSubmitting}
onClick={() => setFieldValue('amount', amountMax)} onClick={() => setFieldValue('amount', amountMax)}
> >
Use Max Use Max

View File

@ -133,7 +133,7 @@ export default function Add({
setSubmitting(false) setSubmitting(false)
}} }}
> >
{({ isSubmitting, submitForm, values, isValid }) => ( {({ isSubmitting, setSubmitting, submitForm, values, isValid }) => (
<> <>
<div className={styles.addInput}> <div className={styles.addInput}>
{isWarningAccepted ? ( {isWarningAccepted ? (
@ -189,6 +189,7 @@ export default function Add({
tokenAddress={tokenInAddress} tokenAddress={tokenInAddress}
tokenSymbol={tokenInSymbol} tokenSymbol={tokenInSymbol}
txId={txId} txId={txId}
setSubmitting={setSubmitting}
/> />
{debug && <DebugOutput output={values} />} {debug && <DebugOutput output={values} />}
</> </>

View File

@ -160,7 +160,7 @@ export default function Remove({
type="range" type="range"
min="0" min="0"
max={amountMaxPercent} max={amountMaxPercent}
disabled={!isAssetNetwork} disabled={!isAssetNetwork || isLoading}
value={amountPercent} value={amountPercent}
onChange={handleAmountPercentChange} onChange={handleAmountPercentChange}
/> />
@ -168,7 +168,7 @@ export default function Remove({
style="text" style="text"
size="small" size="small"
className={styles.maximum} className={styles.maximum}
disabled={!isAssetNetwork} disabled={!isAssetNetwork || isLoading}
onClick={handleMaxButton} onClick={handleMaxButton}
> >
{`${amountMaxPercent}% max`} {`${amountMaxPercent}% max`}
@ -197,7 +197,7 @@ export default function Remove({
postfix="%" postfix="%"
sortOptions={false} sortOptions={false}
options={slippagePresets} options={slippagePresets}
disabled={!isAssetNetwork} disabled={!isAssetNetwork || isLoading}
value={slippage} value={slippage}
onChange={handleSlippageChange} onChange={handleSlippageChange}
/> />
@ -208,7 +208,7 @@ export default function Remove({
actionName={content.pool.remove.action} actionName={content.pool.remove.action}
action={handleRemoveLiquidity} action={handleRemoveLiquidity}
successMessage="Successfully removed liquidity." successMessage="Successfully removed liquidity."
isDisabled={!isAssetNetwork} isDisabled={!isAssetNetwork || amountOcean === '0'}
txId={txId} txId={txId}
tokenAddress={tokenOutAddress} tokenAddress={tokenOutAddress}
tokenSymbol={tokenOutSymbol} tokenSymbol={tokenOutSymbol}

View File

@ -106,7 +106,7 @@ export default function FormTrade({
setSubmitting(false) setSubmitting(false)
}} }}
> >
{({ isSubmitting, submitForm, values, isValid }) => ( {({ isSubmitting, setSubmitting, submitForm, values, isValid }) => (
<> <>
{isWarningAccepted ? ( {isWarningAccepted ? (
<Swap <Swap
@ -156,6 +156,7 @@ export default function FormTrade({
txId={txId} txId={txId}
tokenAddress={tokenAddress} tokenAddress={tokenAddress}
tokenSymbol={tokenSymbol} tokenSymbol={tokenSymbol}
setSubmitting={setSubmitting}
/> />
{debug && ( {debug && (