sidebar item disable if domain not verified

This commit is contained in:
hamid zarghami
2025-08-17 15:49:51 +03:30
parent f011f4369c
commit a6d7533075
2 changed files with 23 additions and 4 deletions
+19 -1
View File
@@ -8,17 +8,29 @@ import { clx } from '../helpers/utils'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Paths } from '@/utils/Paths' import { Paths } from '@/utils/Paths'
import Storage from './components/Storage' import Storage from './components/Storage'
import { useGetDomains } from '@/pages/setting/domain/hooks/useDomainData'
import { toast } from '@/components/Toast'
const SideBar: FC = () => { const SideBar: FC = () => {
const { t } = useTranslation() const { t } = useTranslation()
const { openSidebar, setOpenSidebar } = useSharedStore() const { openSidebar, setOpenSidebar } = useSharedStore()
const location = useLocation() const location = useLocation()
const { data: domains } = useGetDomains()
const isActive = (path: string) => location.pathname === path const isActive = (path: string) => location.pathname === path
const isDomainActive = !!domains?.data?.domain?.isVerified
const iconSizeSideBar = 20 const iconSizeSideBar = 20
const handleItemClick = (link: string, isLogout?: boolean) => (e: React.MouseEvent<HTMLAnchorElement>) => {
if (!isDomainActive && link !== Paths.settingDomain && !isLogout) {
e.preventDefault()
toast('ابتدا باید یک دامنه تایید شده داشته باشید', 'error')
return
}
setOpenSidebar(false)
}
return ( return (
<> <>
{ {
@@ -45,6 +57,7 @@ const SideBar: FC = () => {
title={t('setting.mail_server')} title={t('setting.mail_server')}
isActive={isActive(Paths.settingMailServer)} isActive={isActive(Paths.settingMailServer)}
link={Paths.settingMailServer} link={Paths.settingMailServer}
onClick={handleItemClick(Paths.settingMailServer)}
/> />
<SideBarItem <SideBarItem
@@ -52,6 +65,7 @@ const SideBar: FC = () => {
title={t('setting.domain')} title={t('setting.domain')}
isActive={isActive(Paths.settingDomain)} isActive={isActive(Paths.settingDomain)}
link={Paths.settingDomain} link={Paths.settingDomain}
onClick={handleItemClick(Paths.settingDomain)}
/> />
<SideBarItem <SideBarItem
@@ -59,6 +73,7 @@ const SideBar: FC = () => {
title={t('setting.address')} title={t('setting.address')}
isActive={isActive(Paths.settingAddress)} isActive={isActive(Paths.settingAddress)}
link={Paths.settingAddress} link={Paths.settingAddress}
onClick={handleItemClick(Paths.settingAddress)}
/> />
<SideBarItem <SideBarItem
@@ -66,6 +81,7 @@ const SideBar: FC = () => {
title={t('setting.personality')} title={t('setting.personality')}
isActive={isActive(Paths.settingPersonalityList)} isActive={isActive(Paths.settingPersonalityList)}
link={Paths.settingPersonalityList} link={Paths.settingPersonalityList}
onClick={handleItemClick(Paths.settingPersonalityList)}
/> />
{/* <SideBarItem {/* <SideBarItem
@@ -80,6 +96,7 @@ const SideBar: FC = () => {
title={t('setting.signature')} title={t('setting.signature')}
isActive={isActive(Paths.settingSignature)} isActive={isActive(Paths.settingSignature)}
link={Paths.settingSignature} link={Paths.settingSignature}
onClick={handleItemClick(Paths.settingSignature)}
/> />
</div> </div>
@@ -92,6 +109,7 @@ const SideBar: FC = () => {
isActive={isActive('logout')} isActive={isActive('logout')}
link={`#`} link={`#`}
isLogout isLogout
onClick={handleItemClick('#', true)}
/> />
</div> </div>
</div> </div>
+4 -3
View File
@@ -1,4 +1,4 @@
import { FC, ReactNode } from 'react' import { FC, ReactNode, MouseEvent } from 'react'
import { Link } from 'react-router-dom' import { Link } from 'react-router-dom'
import { clx } from '../helpers/utils' import { clx } from '../helpers/utils'
@@ -9,13 +9,14 @@ type Props = {
isActive: boolean, isActive: boolean,
link: string, link: string,
isLogout?: boolean, isLogout?: boolean,
isWithoutLine?: boolean isWithoutLine?: boolean,
onClick?: (event: MouseEvent<HTMLAnchorElement>) => void
} }
const SideBarItem: FC<Props> = (props: Props) => { const SideBarItem: FC<Props> = (props: Props) => {
return ( return (
<Link to={props.link} className='flex text-xs gap-9 mt-4'> <Link to={props.link} className='flex text-xs gap-9 mt-4' onClick={props.onClick}>
{ {
!props.isWithoutLine && !props.isWithoutLine &&
<div className={clx( <div className={clx(