frontend/pages/index.tsx (view raw)
1import {useRouter} from 'next/router';
2import {useTranslation} from 'react-i18next';
3import Layout from '../layouts/Centered';
4import CreateEvent from '../containers/CreateEvent';
5import LanguagesIcon from '../containers/Languages/Icon';
6import Paper from '../components/Paper';
7import Logo from '../components/Logo';
8import {useSession} from 'next-auth/react';
9import pageUtils from '../lib/pageUtils';
10import {useEffect} from 'react';
11import useRedirectUrlStore from '../stores/useRedirectUrl';
12
13interface PageProps {
14 announcement?: string;
15}
16
17const Home = (props: PageProps) => {
18 const {t} = useTranslation();
19 const router = useRouter();
20 const session = useSession();
21 const isAuthenticated = session.status === 'authenticated';
22 const isReady = session.status !== 'loading';
23 const getRedirectUrl = useRedirectUrlStore(s => s.getRedirectUrl);
24
25 useEffect(() => {
26 const redirectUrl = getRedirectUrl();
27 if (redirectUrl) router.push(redirectUrl);
28 }, []);
29
30 const noUserMenuActions = [
31 {
32 label: t('menu.login'),
33 onClick: () => router.push('/auth/login'),
34 id: 'LoginTabs',
35 },
36 {
37 label: t('menu.register'),
38 onClick: () => router.push('/auth/register'),
39 id: 'RegisterTabs',
40 },
41 ];
42
43 const loggedMenuActions = [
44 {
45 label: t('menu.profile'),
46 onClick: () => router.push('/profile'),
47 id: 'ProfileTabs',
48 },
49 {divider: true},
50 {
51 label: t('menu.dashboard'),
52 onClick: () => router.push('/dashboard'),
53 id: 'SeeDashboardTabs',
54 },
55 ];
56
57 const menuActions = isAuthenticated ? loggedMenuActions : noUserMenuActions;
58
59 if (!isReady) return null;
60
61 return (
62 <Layout
63 menuTitle={t('event.creation.title')}
64 menuActions={menuActions}
65 displayMenu={isAuthenticated}
66 {...props}
67 >
68 <Paper>
69 <Logo />
70 <CreateEvent />
71 </Paper>
72 {!isAuthenticated && <LanguagesIcon displayMenu={false} />}
73 </Layout>
74 );
75};
76
77export const getServerSideProps = pageUtils.getServerSideProps();
78
79export default Home;