From f78d5fcc5df199611b980cfb591a36efa5efa215 Mon Sep 17 00:00:00 2001 From: Jakub Majorek Date: Tue, 7 Dec 2021 10:44:49 +0100 Subject: [PATCH] Fix initial discount calculation on draft order line (#1651) --- src/hooks/useUpdateEffect.ts | 14 ++++++++++++++ .../OrderDiscountCommonModal.tsx | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/hooks/useUpdateEffect.ts diff --git a/src/hooks/useUpdateEffect.ts b/src/hooks/useUpdateEffect.ts new file mode 100644 index 000000000..de194a632 --- /dev/null +++ b/src/hooks/useUpdateEffect.ts @@ -0,0 +1,14 @@ +import { useEffect, useRef } from "react"; + +export function useUpdateEffect(fn: () => void, depArr: any[]) { + const mounted = useRef(false); + + useEffect(() => { + if (mounted.current) { + return fn(); + } + mounted.current = true; + }, depArr); +} + +export default useUpdateEffect; diff --git a/src/orders/components/OrderDiscountCommonModal/OrderDiscountCommonModal.tsx b/src/orders/components/OrderDiscountCommonModal/OrderDiscountCommonModal.tsx index c74a63adf..0c661504f 100644 --- a/src/orders/components/OrderDiscountCommonModal/OrderDiscountCommonModal.tsx +++ b/src/orders/components/OrderDiscountCommonModal/OrderDiscountCommonModal.tsx @@ -14,6 +14,7 @@ import ConfirmButton, { import PriceField from "@saleor/components/PriceField"; import RadioGroupField from "@saleor/components/RadioGroupField"; import { Money } from "@saleor/fragments/types/Money"; +import { useUpdateEffect } from "@saleor/hooks/useUpdateEffect"; import { buttonMessages } from "@saleor/intl"; import { makeStyles } from "@saleor/macaw-ui"; import { DiscountValueTypeEnum } from "@saleor/types/globalTypes"; @@ -258,7 +259,7 @@ const OrderDiscountCommonModal: React.FC = ({ setValue(recalculatedValue); }; - useEffect(handleValueConversion, [calculationMode]); + useUpdateEffect(handleValueConversion, [calculationMode]); const dialogTitle = modalType === ORDER_LINE_DISCOUNT