Skip to content
Snippets Groups Projects
Commit e20d72ed authored by Piotr Gawron's avatar Piotr Gawron
Browse files

show info about matomo in cookie banner

parent 53bf4829
No related branches found
No related tags found
1 merge request!275Resolve "cookie banner for matomo"
......@@ -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"
......
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',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment