From 506b66745862b246c3a49fa03de6174b7713e48d Mon Sep 17 00:00:00 2001 From: micky Date: Thu, 11 Apr 2024 15:41:56 +0400 Subject: [PATCH] fix initial state --- .../selectors/sidecarOrdersSelectors.ts | 4 ++-- .../sidecarOrders/useSidecarOrdersGroup.ts | 5 +++++ src/lib/useEffectOnce.ts | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/lib/useEffectOnce.ts diff --git a/src/context/SyntheticsStateContext/selectors/sidecarOrdersSelectors.ts b/src/context/SyntheticsStateContext/selectors/sidecarOrdersSelectors.ts index 47316d3ae8..02c192e634 100644 --- a/src/context/SyntheticsStateContext/selectors/sidecarOrdersSelectors.ts +++ b/src/context/SyntheticsStateContext/selectors/sidecarOrdersSelectors.ts @@ -41,8 +41,8 @@ export const makeSelectConfirmationBoxSidecarOrdersEntries = createSelectorFacto export const makeSelectConfirmationBoxSidecarOrdersSetEntries = createSelectorFactory((group: "tp" | "sl" | "limit") => createSelector(function selectSidecarOrdersEntriesByGroup(q) { return { - tp: () => q(selectConfirmationBoxSidecarOrdersSetSlEntries), - sl: () => q(selectConfirmationBoxSidecarOrdersSetTpEntries), + tp: () => q(selectConfirmationBoxSidecarOrdersSetTpEntries), + sl: () => q(selectConfirmationBoxSidecarOrdersSetSlEntries), limit: () => q(selectConfirmationBoxSidecarOrdersSetLimitEntries), }[group](); }) diff --git a/src/domain/synthetics/sidecarOrders/useSidecarOrdersGroup.ts b/src/domain/synthetics/sidecarOrders/useSidecarOrdersGroup.ts index e0695068fa..e4c20c789b 100644 --- a/src/domain/synthetics/sidecarOrders/useSidecarOrdersGroup.ts +++ b/src/domain/synthetics/sidecarOrders/useSidecarOrdersGroup.ts @@ -10,6 +10,7 @@ import { import { selectConfirmationBoxSidecarOrdersTotalSizeUsd } from "context/SyntheticsStateContext/selectors/sidecarOrdersSelectors"; import { MAX_PERCENTAGE, PERCENTAGE_DECEMALS, getDefaultEntryField, getDefaultEntry } from "./utils"; import { SidecarOrderEntryBase, EntryField, SidecarOrderEntryGroupBase, GroupPrefix } from "./types"; +import useEffectOnce from "lib/useEffectOnce"; export function useSidecarOrdersGroup({ prefix, @@ -97,6 +98,10 @@ export function useSidecarOrdersGroup({ const [entries, setEntries] = ordersState as any as [T[], Dispatch>]; + useEffectOnce(() => { + setEntries(initialState); + }); + const totalPercentage = useSelector(makeSelectConfirmationBoxSidecarOrdersTotalPercentage(prefix)); const clampEntryPercentage = useCallback( diff --git a/src/lib/useEffectOnce.ts b/src/lib/useEffectOnce.ts new file mode 100644 index 0000000000..532403af24 --- /dev/null +++ b/src/lib/useEffectOnce.ts @@ -0,0 +1,14 @@ +import { useEffect, useRef } from "react"; + +function useEffectOnce(effect) { + const hasRunRef = useRef(false); + + useEffect(() => { + if (!hasRunRef.current) { + effect(); + hasRunRef.current = true; + } + }, [effect]); +} + +export default useEffectOnce;