2023-01-08 02:08:19 -08:00
|
|
|
import { Center, Stack, Group, Divider, Box } from '@mantine/core';
|
2023-04-30 22:05:06 -07:00
|
|
|
import { RiArrowLeftSLine, RiErrorWarningLine, RiHome4Line, RiMenuFill } from 'react-icons/ri';
|
2023-01-07 23:09:58 -08:00
|
|
|
import { useNavigate, useRouteError } from 'react-router';
|
2023-04-30 22:05:06 -07:00
|
|
|
import { Button, DropdownMenu, Text } from '/@/renderer/components';
|
|
|
|
|
import { AppMenu } from '/@/renderer/features/titlebar/components/app-menu';
|
2023-01-07 23:09:58 -08:00
|
|
|
import { AppRoute } from '/@/renderer/router/routes';
|
|
|
|
|
|
|
|
|
|
const RouteErrorBoundary = () => {
|
|
|
|
|
const navigate = useNavigate();
|
|
|
|
|
const error = useRouteError() as any;
|
|
|
|
|
console.log('error', error);
|
|
|
|
|
|
|
|
|
|
const handleReload = () => {
|
|
|
|
|
navigate(0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleReturn = () => {
|
|
|
|
|
navigate(-1);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const handleHome = () => {
|
|
|
|
|
navigate(AppRoute.HOME);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
2023-01-08 02:08:19 -08:00
|
|
|
<Box bg="var(--main-bg)">
|
2023-01-07 23:09:58 -08:00
|
|
|
<Center sx={{ height: '100vh' }}>
|
|
|
|
|
<Stack sx={{ maxWidth: '50%' }}>
|
|
|
|
|
<Group>
|
|
|
|
|
<Button
|
|
|
|
|
px={10}
|
|
|
|
|
variant="subtle"
|
|
|
|
|
onClick={handleReturn}
|
|
|
|
|
>
|
|
|
|
|
<RiArrowLeftSLine size={20} />
|
|
|
|
|
</Button>
|
|
|
|
|
<RiErrorWarningLine
|
|
|
|
|
color="var(--danger-color)"
|
|
|
|
|
size={30}
|
|
|
|
|
/>
|
|
|
|
|
<Text size="lg">Something went wrong</Text>
|
|
|
|
|
</Group>
|
|
|
|
|
<Divider my={5} />
|
|
|
|
|
<Text size="sm">{error?.message}</Text>
|
2023-01-30 21:34:56 -08:00
|
|
|
<Group
|
|
|
|
|
grow
|
|
|
|
|
spacing="sm"
|
|
|
|
|
>
|
2023-01-07 23:09:58 -08:00
|
|
|
<Button
|
2023-01-08 02:08:19 -08:00
|
|
|
leftIcon={<RiHome4Line />}
|
2023-01-30 21:34:56 -08:00
|
|
|
size="md"
|
2023-01-07 23:09:58 -08:00
|
|
|
sx={{ flex: 0.5 }}
|
|
|
|
|
variant="default"
|
|
|
|
|
onClick={handleHome}
|
|
|
|
|
>
|
|
|
|
|
Go home
|
|
|
|
|
</Button>
|
2023-04-30 22:05:06 -07:00
|
|
|
<DropdownMenu position="bottom-start">
|
|
|
|
|
<DropdownMenu.Target>
|
|
|
|
|
<Button
|
|
|
|
|
leftIcon={<RiMenuFill />}
|
|
|
|
|
size="md"
|
|
|
|
|
sx={{ flex: 0.5 }}
|
|
|
|
|
variant="default"
|
|
|
|
|
>
|
|
|
|
|
Menu
|
|
|
|
|
</Button>
|
|
|
|
|
</DropdownMenu.Target>
|
|
|
|
|
<DropdownMenu.Dropdown>
|
|
|
|
|
<AppMenu />
|
|
|
|
|
</DropdownMenu.Dropdown>
|
|
|
|
|
</DropdownMenu>
|
|
|
|
|
</Group>
|
|
|
|
|
<Group grow>
|
2023-01-07 23:09:58 -08:00
|
|
|
<Button
|
2023-01-30 21:34:56 -08:00
|
|
|
size="md"
|
2023-01-07 23:09:58 -08:00
|
|
|
variant="filled"
|
|
|
|
|
onClick={handleReload}
|
|
|
|
|
>
|
|
|
|
|
Reload
|
|
|
|
|
</Button>
|
|
|
|
|
</Group>
|
|
|
|
|
</Stack>
|
|
|
|
|
</Center>
|
2023-01-08 02:08:19 -08:00
|
|
|
</Box>
|
2023-01-07 23:09:58 -08:00
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default RouteErrorBoundary;
|