Skip to content

Commit c03e247

Browse files
committed
feat: Add Cookies Modal
1 parent 75c683e commit c03e247

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

src/app/layout.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ const CustomCursor = React.lazy(() =>
2020
const Header = React.lazy(() =>
2121
import('@/layout/components/header').then((module) => ({ default: module.Header }))
2222
);
23-
// const CookiesModal = React.lazy(() =>
24-
// import('@/layout/components/cookies-modal').then((module) => ({
25-
// default: module.CookiesModal
26-
// }))
27-
// );
23+
const CookiesModal = React.lazy(() =>
24+
import('@/layout/components/cookies-modal').then((module) => ({
25+
default: module.CookiesModal
26+
}))
27+
);
2828
const PerformanceMonitor = React.lazy(() =>
2929
import('@/shared/components/performance-monitor').then((module) => ({
3030
default: module.PerformanceMonitor
@@ -120,7 +120,7 @@ export default function RootLayout({
120120

121121
{children}
122122

123-
{/* <CookiesModal /> */}
123+
<CookiesModal />
124124

125125
<ToastContainer
126126
limit={4}

src/layout/components/cookies-modal/index.tsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use client';
2-
3-
import { useState } from 'react';
2+
import { useEffect, useState } from 'react';
43
import clsx from 'clsx';
54

65
import {
@@ -13,20 +12,32 @@ import { COOKIES_MODAL_STATUS } from '@/shared/constants';
1312
import { Button } from '@/shared/components/button';
1413

1514
export function CookiesModal() {
16-
const [cookiesModalStatus, setCookiesModalStatus] = useState<CookiesModalStatus>(() =>
17-
getCookiesModalStatus()
15+
const [cookiesModalStatus, setCookiesModalStatus] = useState<CookiesModalStatus>(
16+
COOKIES_MODAL_STATUS.NONE
1817
);
1918

19+
useEffect(() => {
20+
try {
21+
const initial = getCookiesModalStatus();
22+
setCookiesModalStatus(initial);
23+
} catch {
24+
setCookiesModalStatus(COOKIES_MODAL_STATUS.NONE);
25+
}
26+
}, []);
27+
2028
const handleAccept = () => {
21-
setCookiesModalStatus(COOKIES_MODAL_STATUS.ACCESPT);
22-
updateCookiesModalStatus(COOKIES_MODAL_STATUS.ACCESPT);
29+
setCookiesModalStatus(COOKIES_MODAL_STATUS.ACCEPT);
30+
updateCookiesModalStatus(COOKIES_MODAL_STATUS.ACCEPT);
2331
};
32+
2433
const handleReject = () => {
2534
setCookiesModalStatus(COOKIES_MODAL_STATUS.REJECT);
2635
updateCookiesModalStatus(COOKIES_MODAL_STATUS.REJECT);
2736
};
2837

29-
return cookiesModalStatus === COOKIES_MODAL_STATUS.NONE ? (
38+
if (cookiesModalStatus !== COOKIES_MODAL_STATUS.NONE) return null;
39+
40+
return (
3041
<div
3142
className={clsx(
3243
'fixed flex flex-col gap-2 bottom-5 left-5 max-md:left-1/2 max-md:-translate-x-1/2 transform border p-4 w-11/12 max-w-sm select-none shadow backdrop-blur-sm duration-500 hover:bg-slate-300/10 border-slate-300/40 bg-transparent',
@@ -44,5 +55,5 @@ export function CookiesModal() {
4455
<Button label="Reject" type="button" onClick={handleReject} />
4556
</div>
4657
</div>
47-
) : null;
58+
);
4859
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const COOKIES_MODAL_STATUS = {
2-
ACCESPT: 'ACCESPT',
2+
ACCEPT: 'ACCEPT',
33
REJECT: 'REJECT',
44
NONE: 'NONE'
55
} as const;

src/shared/helpers/cookies-modal.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { COOKIES_MODAL_STATUS, LOCAL_STORAGE_KEYS } from '../constants';
33
export type CookiesModalStatus = keyof typeof COOKIES_MODAL_STATUS;
44

55
export function getCookiesModalStatus(): CookiesModalStatus {
6-
if (typeof window === 'undefined') return COOKIES_MODAL_STATUS.NONE;
76
return (
87
(localStorage.getItem(LOCAL_STORAGE_KEYS.COOKIES_MODAL) as
98
| CookiesModalStatus
@@ -12,7 +11,5 @@ export function getCookiesModalStatus(): CookiesModalStatus {
1211
}
1312

1413
export function updateCookiesModalStatus(status: CookiesModalStatus): void {
15-
if (typeof window !== 'undefined') {
16-
localStorage.setItem(LOCAL_STORAGE_KEYS.COOKIES_MODAL, status);
17-
}
14+
localStorage.setItem(LOCAL_STORAGE_KEYS.COOKIES_MODAL, status);
1815
}

0 commit comments

Comments
 (0)