-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.tsx
More file actions
110 lines (104 loc) · 3.44 KB
/
Copy pathindex.tsx
File metadata and controls
110 lines (104 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import type { PageType } from '@city-of-helsinki/react-helsinki-headless-cms';
import {
Page as RHHCPage,
TemplateEnum,
getBreadcrumbsFromPage,
} from '@city-of-helsinki/react-helsinki-headless-cms';
import commonTranslationsEn from '@events-helsinki/common-i18n/locales/en/common.json';
import commonTranslationsFi from '@events-helsinki/common-i18n/locales/fi/common.json';
import commonTranslationsSv from '@events-helsinki/common-i18n/locales/sv/common.json';
import type {
AppLanguage,
PageByTemplateBreadcrumbTitleQuery,
PageByTemplateBreadcrumbTitleQueryVariables,
} from '@events-helsinki/components';
import {
NavigationContext,
Navigation,
FooterSection,
getLanguageOrDefault,
usePageScrollRestoration,
RouteMeta,
useResilientTranslation,
getQlLanguage,
PageByTemplateBreadcrumbTitleDocument,
getFilteredBreadcrumbs,
BreadcrumbContainer,
} from '@events-helsinki/components';
import { type BreadcrumbListItem } from 'hds-react';
import type { GetStaticPropsContext } from 'next';
import dynamic from 'next/dynamic';
import React, { useContext } from 'react';
import AppConfig from '../../domain/app/AppConfig';
import getEventsStaticProps from '../../domain/app/getEventsStaticProps';
import ConsentPageContent from '../../domain/cookieConsent/ConsentPageContent';
import serverSideTranslationsWithCommon from '../../domain/i18n/serverSideTranslationsWithCommon';
const CookieSettingsPage = dynamic(
() => import('hds-react').then((mod) => mod.CookieSettingsPage),
{ ssr: false }
);
const cookieConsentBreadcrumbTitle: Record<AppLanguage, string> = {
fi: commonTranslationsFi['cookies'] ?? 'Evästeet',
en: commonTranslationsEn['cookies'] ?? 'Cookies',
sv: commonTranslationsSv['cookies'] ?? 'Cookies',
};
export default function CookieConsent({
breadcrumbs,
}: Readonly<{
breadcrumbs?: BreadcrumbListItem[];
}>) {
const { footerMenu } = useContext(NavigationContext);
const { resilientT } = useResilientTranslation();
usePageScrollRestoration();
return (
<RHHCPage
className="pageLayout"
navigation={<Navigation />}
content={
<>
<RouteMeta origin={AppConfig.origin} />
{breadcrumbs && <BreadcrumbContainer breadcrumbs={breadcrumbs} />}
<ConsentPageContent>
<CookieSettingsPage />
</ConsentPageContent>
</>
}
footer={
<FooterSection
menu={footerMenu}
appName={resilientT('appEvents:appName')}
hasFeedBack={false}
/>
}
/>
);
}
export async function getStaticProps(context: GetStaticPropsContext) {
return getEventsStaticProps(context, async ({ apolloClient }) => {
const language = getLanguageOrDefault(context.locale);
const { data: pageBreadcrumbTitleData } = await apolloClient.query<
PageByTemplateBreadcrumbTitleQuery,
PageByTemplateBreadcrumbTitleQueryVariables
>({
query: PageByTemplateBreadcrumbTitleDocument,
variables: {
template: TemplateEnum.FrontPage,
language: getQlLanguage(language).toLocaleLowerCase(),
},
});
const breadcrumbs: BreadcrumbListItem[] = [
...getFilteredBreadcrumbs(
getBreadcrumbsFromPage(
pageBreadcrumbTitleData.pageByTemplate as PageType
)
),
{ title: cookieConsentBreadcrumbTitle[language], path: null },
];
return {
props: {
breadcrumbs,
...(await serverSideTranslationsWithCommon(language)),
},
};
});
}