feat: use leverage slider

This commit is contained in:
Bartłomiej Głownia
2024-01-22 11:04:11 +01:00
parent d46730bcc0
commit 96fb197ded
2 changed files with 23 additions and 7 deletions
@@ -3,6 +3,7 @@ import {
TradingButton as Button,
TradingInput as Input,
FormGroup,
LeverageSlider,
} from '@vegaprotocol/ui-toolkit';
import { MarginMode, useVegaWallet } from '@vegaprotocol/wallet';
import * as Types from '@vegaprotocol/types';
@@ -86,13 +87,19 @@ const IsolatedMarginModeDialog = ({
create,
}: MarginDialogProps & { marginFactor: string }) => {
const [leverage, setLeverage] = useState(
(1 / Number(marginFactor)).toFixed(1)
Number((1 / Number(marginFactor)).toFixed(1))
);
useEffect(() => {
setLeverage((1 / Number(marginFactor)).toFixed(1));
}, [marginFactor]);
const { data: maxLeverage } = useMaxLeverage(marketId, partyId);
const max = maxLeverage || 1;
const max = Math.floor((maxLeverage || 1) * 10) / 10;
useEffect(() => {
setLeverage(Number((1 / Number(marginFactor)).toFixed(1)));
}, [marginFactor]);
useEffect(() => {
if (maxLeverage && leverage > max) {
setLeverage(max);
}
}, [max, maxLeverage, leverage]);
const t = useT();
return (
<Dialog
@@ -126,13 +133,21 @@ const IsolatedMarginModeDialog = ({
updateMarginMode: {
market_id: marketId,
mode: MarginMode.MARGIN_MODE_ISOLATED_MARGIN,
marginFactor: `${1 / Number(leverage)}`,
marginFactor: `${1 / leverage}`,
},
});
onClose();
}}
>
<FormGroup label={t('Leverage')} labelFor="leverage-input" compact>
<div className="mb-2">
<LeverageSlider
max={max}
step={0.1}
value={[leverage]}
onValueChange={([value]) => setLeverage(value)}
/>
</div>
<Input
type="number"
id="leverage-input"
@@ -140,7 +155,7 @@ const IsolatedMarginModeDialog = ({
max={max}
step={0.1}
value={leverage}
onChange={(e) => setLeverage(e.target.value)}
onChange={(e) => setLeverage(Number(e.target.value))}
/>
</FormGroup>
<Button className="w-full" type="submit">
@@ -1 +1,2 @@
export * from './slider';
export * from './leverage-slider';