feishin/src/renderer/features/action-required/components/route-error-boundary.tsx

91 lines
3.2 KiB
TypeScript
Raw Normal View History

import { Box, Center, Divider, Group, Stack } 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 = () => {
2023-07-01 19:10:05 -07:00
const navigate = useNavigate();
const error = useRouteError() as any;
console.log('error', error);
2023-01-07 23:09:58 -08:00
2023-07-01 19:10:05 -07:00
const handleReload = () => {
navigate(0);
};
2023-01-07 23:09:58 -08:00
2023-07-01 19:10:05 -07:00
const handleReturn = () => {
navigate(-1);
};
2023-01-07 23:09:58 -08:00
2023-07-01 19:10:05 -07:00
const handleHome = () => {
navigate(AppRoute.HOME);
};
2023-01-07 23:09:58 -08:00
2023-07-01 19:10:05 -07:00
return (
<Box bg="var(--main-bg)">
<Center sx={{ height: '100vh' }}>
<Stack sx={{ maxWidth: '50%' }}>
<Group>
<Button
onClick={handleReturn}
2023-07-01 19:10:05 -07:00
px={10}
variant="subtle"
>
<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>
<Group
grow
spacing="sm"
>
<Button
leftIcon={<RiHome4Line />}
onClick={handleHome}
2023-07-01 19:10:05 -07:00
size="md"
sx={{ flex: 0.5 }}
variant="default"
>
Go home
</Button>
<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>
<Button
onClick={handleReload}
2023-07-01 19:10:05 -07:00
size="md"
variant="filled"
>
Reload
</Button>
</Group>
</Stack>
</Center>
</Box>
);
2023-01-07 23:09:58 -08:00
};
export default RouteErrorBoundary;