add more trade form validation
This commit is contained in:
parent
dfcc9a5a30
commit
d204b980d7
|
@ -52,6 +52,7 @@ import useSelectedMarket from 'hooks/useSelectedMarket'
|
||||||
import {
|
import {
|
||||||
floorToDecimal,
|
floorToDecimal,
|
||||||
formatCurrencyValue,
|
formatCurrencyValue,
|
||||||
|
formatNumericValue,
|
||||||
getDecimalCount,
|
getDecimalCount,
|
||||||
} from 'utils/numbers'
|
} from 'utils/numbers'
|
||||||
import LogoWithFallback from '@components/shared/LogoWithFallback'
|
import LogoWithFallback from '@components/shared/LogoWithFallback'
|
||||||
|
@ -134,6 +135,7 @@ const AdvancedTradeForm = () => {
|
||||||
quoteLogoURI,
|
quoteLogoURI,
|
||||||
quoteSymbol,
|
quoteSymbol,
|
||||||
serumOrPerpMarket,
|
serumOrPerpMarket,
|
||||||
|
marketAddress,
|
||||||
} = useSelectedMarket()
|
} = useSelectedMarket()
|
||||||
const { remainingBorrowsInPeriod, timeToNextPeriod } =
|
const { remainingBorrowsInPeriod, timeToNextPeriod } =
|
||||||
useRemainingBorrowsInPeriod()
|
useRemainingBorrowsInPeriod()
|
||||||
|
@ -215,7 +217,6 @@ const AdvancedTradeForm = () => {
|
||||||
s.tradeForm.quoteSize = ''
|
s.tradeForm.quoteSize = ''
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
setFormErrors({})
|
|
||||||
},
|
},
|
||||||
[oraclePrice],
|
[oraclePrice],
|
||||||
)
|
)
|
||||||
|
@ -236,7 +237,6 @@ const AdvancedTradeForm = () => {
|
||||||
s.tradeForm.baseSize = ''
|
s.tradeForm.baseSize = ''
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
setFormErrors({})
|
|
||||||
},
|
},
|
||||||
[oraclePrice],
|
[oraclePrice],
|
||||||
)
|
)
|
||||||
|
@ -398,6 +398,13 @@ const AdvancedTradeForm = () => {
|
||||||
}
|
}
|
||||||
}, [baseBank, quoteBank, selectedMarket])
|
}, [baseBank, quoteBank, selectedMarket])
|
||||||
|
|
||||||
|
// clear form errors on base size change or new market
|
||||||
|
useEffect(() => {
|
||||||
|
if (Object.keys(formErrors).length) {
|
||||||
|
setFormErrors({})
|
||||||
|
}
|
||||||
|
}, [tradeForm.baseSize, marketAddress])
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Updates the limit price on page load
|
* Updates the limit price on page load
|
||||||
*/
|
*/
|
||||||
|
@ -506,7 +513,15 @@ const AdvancedTradeForm = () => {
|
||||||
tradeForm.side,
|
tradeForm.side,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
const invalidFields = isFormValid({
|
||||||
|
baseSize: baseSize,
|
||||||
|
price: tradeForm.price,
|
||||||
|
orderType: tradeForm.tradeType,
|
||||||
|
side: tradeForm.side,
|
||||||
|
})
|
||||||
|
if (Object.keys(invalidFields).length) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (selectedMarket instanceof Serum3Market) {
|
if (selectedMarket instanceof Serum3Market) {
|
||||||
const spotOrderType = tradeForm.ioc
|
const spotOrderType = tradeForm.ioc
|
||||||
? Serum3OrderType.immediateOrCancel
|
? Serum3OrderType.immediateOrCancel
|
||||||
|
@ -732,7 +747,7 @@ const AdvancedTradeForm = () => {
|
||||||
}
|
}
|
||||||
if (baseSize < minOrderSize) {
|
if (baseSize < minOrderSize) {
|
||||||
invalidFields.baseSize = t('trade:min-order-size-error', {
|
invalidFields.baseSize = t('trade:min-order-size-error', {
|
||||||
minSize: minOrderSize,
|
minSize: formatNumericValue(minOrderSize, minOrderDecimals),
|
||||||
symbol: baseSymbol,
|
symbol: baseSymbol,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -741,7 +756,14 @@ const AdvancedTradeForm = () => {
|
||||||
}
|
}
|
||||||
return invalidFields
|
return invalidFields
|
||||||
},
|
},
|
||||||
[baseBank, isTriggerOrder, minOrderSize, oraclePrice, setFormErrors],
|
[
|
||||||
|
baseBank,
|
||||||
|
isTriggerOrder,
|
||||||
|
minOrderDecimals,
|
||||||
|
minOrderSize,
|
||||||
|
oraclePrice,
|
||||||
|
setFormErrors,
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
const tooMuchSize = useMemo(() => {
|
const tooMuchSize = useMemo(() => {
|
||||||
|
|
|
@ -112,5 +112,6 @@ export default function useSelectedMarket() {
|
||||||
quoteSymbol,
|
quoteSymbol,
|
||||||
baseLogoURI,
|
baseLogoURI,
|
||||||
quoteLogoURI,
|
quoteLogoURI,
|
||||||
|
marketAddress,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue