import type { LayoutType } from '@/@types/theme'
import Loading from '@/components/shared/Loading'
import { Alert, Button } from '@/components/ui'
import { store, useStoreState } from '@/store'
import { Suspense, useEffect } from 'react'
import { ErrorBoundary } from 'react-error-boundary'
import { FaArrowLeft } from 'react-icons/fa';
import { Navigate, useLocation } from 'react-router-dom'
import DialogProvider from './shared/DialogContext'
import DialogShowComponent from './shared/DialogContext/DialogShowComponent'
import UiDialog from './shared/UiDialog'
import { DynamicRouter } from '@/routes/dynamicRouter'
import { getAccessDeniedPath } from '@/utils/routing'
interface ViewsProps {
pageContainerType?: 'default' | 'gutterless' | 'contained'
layout?: LayoutType
}
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?.some((e) => e.statusCode === '403' || e.statusCode === '401') && (
)}
{errors?.map((e) => (
{
removeError(e.id)
}}
onClose={() => {
removeError(e.id)
}}
title={e.title}
>
{e.message}
{e.statusCode}
{e.cid}
))}
)
}
export default Views