feishin/src/renderer/features/action-required/routes/action-required-route.tsx

81 lines
3.2 KiB
TypeScript
Raw Normal View History

2022-12-19 15:59:14 -08:00
import { Center, Group, Stack } from '@mantine/core';
import { useTranslation } from 'react-i18next';
2022-12-19 15:59:14 -08:00
import { RiCheckFill } from 'react-icons/ri';
import { Link } from 'react-router-dom';
2022-12-19 16:12:43 -08:00
import { Button, PageHeader, Text } from '/@/renderer/components';
2022-12-19 15:59:14 -08:00
import { ActionRequiredContainer } from '/@/renderer/features/action-required/components/action-required-container';
import { ServerCredentialRequired } from '/@/renderer/features/action-required/components/server-credential-required';
import { ServerRequired } from '/@/renderer/features/action-required/components/server-required';
import { AnimatedPage } from '/@/renderer/features/shared';
import { AppRoute } from '/@/renderer/router/routes';
import { useCurrentServer } from '/@/renderer/store';
const ActionRequiredRoute = () => {
const { t } = useTranslation();
2023-07-01 19:10:05 -07:00
const currentServer = useCurrentServer();
const isServerRequired = !currentServer;
const isCredentialRequired = currentServer && !currentServer.credential;
2022-12-19 15:59:14 -08:00
2023-07-01 19:10:05 -07:00
const checks = [
{
component: <ServerCredentialRequired />,
title: t('error.credentialsRequired', { postProcess: 'sentenceCase' }),
2023-07-01 19:10:05 -07:00
valid: !isCredentialRequired,
},
{
component: <ServerRequired />,
title: t('error.serverRequired', { postProcess: 'serverRequired' }),
2023-07-01 19:10:05 -07:00
valid: !isServerRequired,
},
];
2022-12-19 15:59:14 -08:00
2023-07-01 19:10:05 -07:00
const canReturnHome = checks.every((c) => c.valid);
const displayedCheck = checks.find((c) => !c.valid);
2022-12-19 15:59:14 -08:00
2023-07-01 19:10:05 -07:00
return (
<AnimatedPage>
<PageHeader />
<Center sx={{ height: '100%', width: '100vw' }}>
<Stack
spacing="xl"
sx={{ maxWidth: '50%' }}
2022-12-19 15:59:14 -08:00
>
2023-07-01 19:10:05 -07:00
<Group noWrap>
{displayedCheck && (
<ActionRequiredContainer title={displayedCheck.title}>
{displayedCheck?.component}
</ActionRequiredContainer>
)}
</Group>
<Stack mt="2rem">
{canReturnHome && (
<>
<Group
noWrap
position="center"
>
<RiCheckFill
color="var(--success-color)"
size={30}
/>
<Text size="xl">No issues found</Text>
</Group>
<Button
component={Link}
disabled={!canReturnHome}
to={AppRoute.HOME}
variant="filled"
>
Go back
</Button>
</>
)}
</Stack>
</Stack>
</Center>
</AnimatedPage>
);
2022-12-19 15:59:14 -08:00
};
export default ActionRequiredRoute;