From f9f0b4426e3458ef7dec9b57d9d7c465139b259f Mon Sep 17 00:00:00 2001 From: BrianJiang2021 Date: Tue, 21 Jan 2025 15:29:28 +0800 Subject: [PATCH] fix: address permission for quoteDraft --- apps/storefront/src/components/B3Dialog.tsx | 4 ++- .../components/HierarchyDialog.tsx | 1 + .../storefront/src/pages/QuoteDraft/index.tsx | 28 +++++++++++++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/apps/storefront/src/components/B3Dialog.tsx b/apps/storefront/src/components/B3Dialog.tsx index ae817f91..e20f9c07 100644 --- a/apps/storefront/src/components/B3Dialog.tsx +++ b/apps/storefront/src/components/B3Dialog.tsx @@ -40,6 +40,7 @@ export interface B3DialogProps { dialogContentSx?: SxProps; dialogSx?: SxProps; dialogWidth?: string; + backdropClick?: boolean; } export default function B3Dialog({ @@ -64,6 +65,7 @@ export default function B3Dialog({ fullWidth = false, disabledSaveBtn = false, dialogWidth = '', + backdropClick = false, }: B3DialogProps) { const container = useRef(null); @@ -90,7 +92,7 @@ export default function B3Dialog({ }; const handleCloseClick = (reason?: string) => { - if (reason === 'backdropClick') return; + if (reason === 'backdropClick' && !backdropClick) return; if (handleLeftClick) handleLeftClick(); }; diff --git a/apps/storefront/src/pages/CompanyHierarchy/components/HierarchyDialog.tsx b/apps/storefront/src/pages/CompanyHierarchy/components/HierarchyDialog.tsx index 30883ac0..7f7c1d1c 100644 --- a/apps/storefront/src/pages/CompanyHierarchy/components/HierarchyDialog.tsx +++ b/apps/storefront/src/pages/CompanyHierarchy/components/HierarchyDialog.tsx @@ -131,6 +131,7 @@ function HierarchyDialog({ loading={loading} handleLeftClick={handleClose} handRightClick={handleSwitchCompanyClick} + backdropClick dialogSx={{ '& .MuiDialogTitle-root': { border: 0, diff --git a/apps/storefront/src/pages/QuoteDraft/index.tsx b/apps/storefront/src/pages/QuoteDraft/index.tsx index e4a60a94..07281ff1 100644 --- a/apps/storefront/src/pages/QuoteDraft/index.tsx +++ b/apps/storefront/src/pages/QuoteDraft/index.tsx @@ -9,7 +9,8 @@ import { cloneDeep, concat, uniq } from 'lodash-es'; import CustomButton from '@/components/button/CustomButton'; import { getContrastColor } from '@/components/outSideComponents/utils/b3CustomStyles'; import B3Spin from '@/components/spin/B3Spin'; -import { useMobile, useSetCountry } from '@/hooks'; +import { permissionLevels } from '@/constants'; +import { useMobile, useSetCountry, useValidatePermissionWithComparisonType } from '@/hooks'; import { CustomStyleContext } from '@/shared/customStyleButton'; import { GlobalContext } from '@/shared/global'; import { @@ -186,6 +187,12 @@ function QuoteDraft({ setOpenPage }: PageProps) { const quoteSummaryRef = useRef(null); + const [isAddressCompanyHierarchy] = useValidatePermissionWithComparisonType({ + level: permissionLevels.COMPANY_SUBSIDIARIES, + code: b2bPermissionsMap.getAddressesPermission, + containOrEqual: 'equal', + }); + useSetCountry(); const contactInfoRef = useRef(null); @@ -213,9 +220,20 @@ function QuoteDraft({ setOpenPage }: PageProps) { try { if (isB2BUser) { const companyId = companyB2BId || salesRepCompanyId; - const { - addresses: { edges: addressB2BList = [] }, - } = await getB2BCustomerAddresses(+companyId); + + let addressB2BList = []; + const fetchAddresses = async (id: number) => { + const { + addresses: { edges }, + } = await getB2BCustomerAddresses(id); + return edges; + }; + + if (!selectCompanyHierarchyId) { + addressB2BList = await fetchAddresses(+companyId); + } else if (selectCompanyHierarchyId && isAddressCompanyHierarchy) { + addressB2BList = await fetchAddresses(+selectCompanyHierarchyId); + } const shippingDefaultAddress = addressB2BList.find( (item: B2BAddress) => item?.node?.isDefaultShipping === 1, @@ -314,7 +332,7 @@ function QuoteDraft({ setOpenPage }: PageProps) { init(); // disabling as we only need to run this once and values at starting render are good enough // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [selectCompanyHierarchyId, isAddressCompanyHierarchy]); const quoteAndExtraFieldsInfo = useMemo(() => { const contactInfo: CustomFieldItems = quoteInfoOrigin.contactInfo || {};