import React, { useEffect, useState } from 'react' import Head from 'next/head' import { useRouter } from 'next/router' import { useTranslation } from 'next-i18next' import { NextIntlClientProvider } from 'next-intl' import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { AboutTabs } from '~utils/enums' import { setHeaders } from '~utils/userToken' import AboutHead from '~components/about/AboutHead' import AboutPage from '~components/about/AboutPage' import UpdatesPage from '~components/about/UpdatesPage' import RoadmapPage from '~components/about/RoadmapPage' import SegmentedControl from '~components/common/SegmentedControl' import Segment from '~components/common/Segment' import type { NextApiRequest, NextApiResponse } from 'next' interface Props { page?: string messages: Record } const AboutRoute: React.FC = (props: Props) => { // Set up router const router = useRouter() // Import translations const { t } = useTranslation('common') const [currentTab, setCurrentTab] = useState(AboutTabs.About) const [currentPage, setCurrentPage] = useState('') useEffect(() => { const parts = router.asPath.split('/') const tab = parts[parts.length - 1] switch (tab) { case 'about': setCurrentTab(AboutTabs.About) setCurrentPage(parts[1]) break case 'updates': setCurrentTab(AboutTabs.Updates) setCurrentPage(parts[1]) break case 'roadmap': setCurrentTab(AboutTabs.Roadmap) setCurrentPage(parts[1]) break } }, [router.asPath]) useEffect(() => { if (props.page && ['about', 'updates', 'roadmap'].includes(props.page)) { setCurrentPage(props.page) } }, [props.page]) function handleTabClicked(event: React.ChangeEvent) { const parts = router.asPath.split('/') const path = `/${event.target.value}` switch (event.target.value) { case 'about': router.replace(path) setCurrentTab(AboutTabs.About) setCurrentPage(parts[1]) break case 'updates': router.replace(path) setCurrentTab(AboutTabs.Updates) setCurrentPage(parts[1]) break case 'roadmap': router.replace(path) setCurrentTab(AboutTabs.Roadmap) setCurrentPage(parts[1]) break default: break } } const currentSection = () => { switch (currentTab) { case AboutTabs.About: return case AboutTabs.Updates: return case AboutTabs.Roadmap: return } } function pageHead() { return } return (
{pageHead()}
{t('about.segmented_control.about')} {t('about.segmented_control.updates')} {t('about.segmented_control.roadmap')} {currentSection()}
) } export const getServerSidePaths = async () => { return { paths: [], fallback: true, } } // prettier-ignore export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => { // Set headers for server-side requests setHeaders(req, res) return { props: { page: req.url?.slice(1), ...(await serverSideTranslations(locale, ['common', 'about', 'updates'])), // Provide next-intl messages for child components using next-intl messages: { common: (await import(`../public/locales/${locale}/common.json`)).default, about: (await import(`../public/locales/${locale}/about.json`)).default, updates: (await import(`../public/locales/${locale}/updates.json`)).default, }, // Will be passed to the page component as props }, } } export default AboutRoute