From e20d72edeadc4530e5cc25217b6a219d549fa11b Mon Sep 17 00:00:00 2001
From: Piotr Gawron <p.gawron@atcomp.pl>
Date: Thu, 24 Oct 2024 13:30:43 +0200
Subject: [PATCH] show info about matomo in cookie banner

---
 .../CookieBanner/CookieBanner.component.tsx   | 43 ++++++++++++++++++-
 .../CookieBanner/CookieBanner.constants.ts    |  1 +
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx b/src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx
index 878ee3dd..6968deaa 100644
--- a/src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx
+++ b/src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx
@@ -4,22 +4,35 @@ import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
 import { Button } from '@/shared/Button';
 import Link from 'next/link';
-import { useEffect } from 'react';
+import React, { useEffect, useState } from 'react';
 import { cookiePolicyUrlSelector } from '@/redux/configuration/configuration.selectors';
+import { OptionInput } from '@/components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput';
+import { CheckboxItem } from '@/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.types';
+import { ZERO } from '@/constants/common';
 import {
   USER_ACCEPTED_COOKIES_COOKIE_NAME,
   USER_ACCEPTED_COOKIES_COOKIE_VALUE,
+  USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME,
 } from './CookieBanner.constants';
 
+const selectMatomoOption: CheckboxItem = {
+  id: 'select-matomo',
+  label: 'I agree to collect my data by matomo',
+};
+
 export const CookieBanner = (): React.ReactNode => {
   const dispatch = useAppDispatch();
   const { visible, accepted } = useAppSelector(selectCookieBanner);
   const cookiePolicyUrl = useAppSelector(cookiePolicyUrlSelector);
 
+  const [options, setOptions] = useState([selectMatomoOption]);
+
   useEffect(() => {
     const isAccepted =
       localStorage.getItem(USER_ACCEPTED_COOKIES_COOKIE_NAME) ===
-      USER_ACCEPTED_COOKIES_COOKIE_VALUE.ACCEPTED;
+        USER_ACCEPTED_COOKIES_COOKIE_VALUE.ACCEPTED &&
+      localStorage.getItem(USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME) !== null &&
+      localStorage.getItem(USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME) !== undefined;
     if (isAccepted) {
       dispatch(acceptCookies());
     } else {
@@ -33,6 +46,25 @@ export const CookieBanner = (): React.ReactNode => {
       USER_ACCEPTED_COOKIES_COOKIE_NAME,
       USER_ACCEPTED_COOKIES_COOKIE_VALUE.ACCEPTED,
     );
+    if (options.length > ZERO) {
+      localStorage.setItem(
+        USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME,
+        USER_ACCEPTED_COOKIES_COOKIE_VALUE.ACCEPTED,
+      );
+    } else {
+      localStorage.setItem(
+        USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME,
+        USER_ACCEPTED_COOKIES_COOKIE_VALUE.DECLINED,
+      );
+    }
+  };
+
+  const selectMatomo = (data: CheckboxItem): void => {
+    if (options.length > ZERO) {
+      setOptions([]);
+    } else {
+      setOptions([data]);
+    }
   };
 
   if (!visible || accepted) {
@@ -52,6 +84,13 @@ export const CookieBanner = (): React.ReactNode => {
             </Link>
           </p>
         )}
+        <OptionInput
+          option={selectMatomoOption}
+          currentOptions={options}
+          handleRadioChange={() => {}}
+          handleCheckboxChange={selectMatomo}
+          type="checkbox"
+        />
       </p>
       <Button
         className="h-10 w-36 justify-center"
diff --git a/src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts b/src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts
index 348c713c..dc1f3a5f 100644
--- a/src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts
+++ b/src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts
@@ -1,4 +1,5 @@
 export const USER_ACCEPTED_COOKIES_COOKIE_NAME = 'cookiesAccepted';
+export const USER_ACCEPTED_MATOMO_COOKIES_COOKIE_NAME = 'matomoAccepted';
 
 export const USER_ACCEPTED_COOKIES_COOKIE_VALUE = {
   ACCEPTED: 'true',
-- 
GitLab