import type { LayoutType } from '@/@types/theme'
import AppRoute from '@/components/route/AppRoute'
import PermissionGuard from '@/components/route/PermissionGuard'
import ProtectedRoute from '@/components/route/ProtectedRoute'
import PublicRoute from '@/components/route/PublicRoute'
import Loading from '@/components/shared/Loading'
import PageContainer from '@/components/template/PageContainer'
import { Alert, Button } from '@/components/ui'
import appConfig from '@/configs/app.config'
import { protectedRoutes, publicRoutes } from '@/configs/routes.config'
import { store, useStoreState } from '@/store'
import { Suspense, useEffect } from 'react'
import { ErrorBoundary } from 'react-error-boundary'
import { MdArrowBack } from 'react-icons/md'
import { Navigate, Route, Routes, useLocation } from 'react-router-dom'
import DialogProvider from './shared/DialogContext'
import DialogShowComponent from './shared/DialogContext/DialogShowComponent'
import UiDialog from './shared/UiDialog'
interface ViewsProps {
pageContainerType?: 'default' | 'gutterless' | 'contained'
layout?: LayoutType
}
type AllRoutesProps = ViewsProps
const { authenticatedEntryPath } = appConfig
const AllRoutes = (props: AllRoutesProps) => {
return (
}>
} />
{protectedRoutes.map((route, index) => (
}
/>
))}
} />
}>
{publicRoutes.map((route) => (
}
/>
))}
)
}
function fallbackRender({ error, resetErrorBoundary }: { error: Error; resetErrorBoundary: any }) {
return (
{error.name ?? 'Hata!'}
{error.message}
)
}
const Views = (props: ViewsProps) => {
const { setWarning, removeError } = store.getActions().base.messages
const { errors, warning } = useStoreState((state) => state.base.messages)
const location = useLocation()
useEffect(() => {
setWarning('')
}, [location, setWarning])
return (
}>
{!!warning?.length && (
{warning.map((w, i) => (
{w}
))}
)}
{errors?.map((e) => (
{
removeError(e.id)
}}
onClose={() => {
removeError(e.id)
}}
title={e.title}
>
{e.message}
{e.statusCode}
{e.cid}
))}
)
}
export default Views