From a6d7533075182a524530bc3d14797ceb28f58d98 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 17 Aug 2025 15:49:51 +0330 Subject: [PATCH] sidebar item disable if domain not verified --- src/shared/SideBar.tsx | 20 +++++++++++++++++++- src/shared/SideBarItem.tsx | 7 ++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/shared/SideBar.tsx b/src/shared/SideBar.tsx index 384bda2..8ef8fae 100644 --- a/src/shared/SideBar.tsx +++ b/src/shared/SideBar.tsx @@ -8,17 +8,29 @@ import { clx } from '../helpers/utils' import { useTranslation } from 'react-i18next' import { Paths } from '@/utils/Paths' import Storage from './components/Storage' +import { useGetDomains } from '@/pages/setting/domain/hooks/useDomainData' +import { toast } from '@/components/Toast' const SideBar: FC = () => { const { t } = useTranslation() const { openSidebar, setOpenSidebar } = useSharedStore() const location = useLocation() + const { data: domains } = useGetDomains() const isActive = (path: string) => location.pathname === path - + const isDomainActive = !!domains?.data?.domain?.isVerified const iconSizeSideBar = 20 + const handleItemClick = (link: string, isLogout?: boolean) => (e: React.MouseEvent) => { + if (!isDomainActive && link !== Paths.settingDomain && !isLogout) { + e.preventDefault() + toast('ابتدا باید یک دامنه تایید شده داشته باشید', 'error') + return + } + setOpenSidebar(false) + } + return ( <> { @@ -45,6 +57,7 @@ const SideBar: FC = () => { title={t('setting.mail_server')} isActive={isActive(Paths.settingMailServer)} link={Paths.settingMailServer} + onClick={handleItemClick(Paths.settingMailServer)} /> { title={t('setting.domain')} isActive={isActive(Paths.settingDomain)} link={Paths.settingDomain} + onClick={handleItemClick(Paths.settingDomain)} /> { title={t('setting.address')} isActive={isActive(Paths.settingAddress)} link={Paths.settingAddress} + onClick={handleItemClick(Paths.settingAddress)} /> { title={t('setting.personality')} isActive={isActive(Paths.settingPersonalityList)} link={Paths.settingPersonalityList} + onClick={handleItemClick(Paths.settingPersonalityList)} /> {/* { title={t('setting.signature')} isActive={isActive(Paths.settingSignature)} link={Paths.settingSignature} + onClick={handleItemClick(Paths.settingSignature)} /> @@ -92,6 +109,7 @@ const SideBar: FC = () => { isActive={isActive('logout')} link={`#`} isLogout + onClick={handleItemClick('#', true)} /> diff --git a/src/shared/SideBarItem.tsx b/src/shared/SideBarItem.tsx index 55560f8..95f22fb 100644 --- a/src/shared/SideBarItem.tsx +++ b/src/shared/SideBarItem.tsx @@ -1,4 +1,4 @@ -import { FC, ReactNode } from 'react' +import { FC, ReactNode, MouseEvent } from 'react' import { Link } from 'react-router-dom' import { clx } from '../helpers/utils' @@ -9,13 +9,14 @@ type Props = { isActive: boolean, link: string, isLogout?: boolean, - isWithoutLine?: boolean + isWithoutLine?: boolean, + onClick?: (event: MouseEvent) => void } const SideBarItem: FC = (props: Props) => { return ( - + { !props.isWithoutLine &&