diff --git a/app/components/common/Cookies.telefunc.ts b/app/components/common/Cookies.telefunc.ts index e58234e..723a2c2 100644 --- a/app/components/common/Cookies.telefunc.ts +++ b/app/components/common/Cookies.telefunc.ts @@ -14,12 +14,12 @@ export async function onUpdateConsentCookie(cookieName: ConsentCookies, cookieVa return { ok: true, message: "Updated consent cookie", cookieName, cookieValue }; } -export async function onAcceptAllConsentCookie() { +export async function onSetAllConsentCookie(cookieValue: boolean) { const context = getTelefuncContext(); const { reply } = context; - CookieParser.set(reply, "analytics", "true", 365); - CookieParser.set(reply, "customization", "true", 365); + CookieParser.set(reply, "analytics", cookieValue.toString(), 365); + CookieParser.set(reply, "customization", cookieValue.toString(), 365); return { ok: true, message: "Updated consents cookies" }; } diff --git a/app/components/common/Cookies.tsx b/app/components/common/Cookies.tsx index a9d3f20..1074590 100644 --- a/app/components/common/Cookies.tsx +++ b/app/components/common/Cookies.tsx @@ -1,5 +1,5 @@ -import { onUpdateConsentCookie, onAcceptAllConsentCookie, type ConsentCookies } from "./Cookies.telefunc"; -import React, { useState, useContext, createContext } from "react"; +import { onUpdateConsentCookie, onSetAllConsentCookie, type ConsentCookies } from "./Cookies.telefunc"; +import React, { useState, useContext, createContext, useMemo } from "react"; import { usePageContext } from "vike-react/usePageContext"; import { reload } from "vike/client/router"; import { Button } from "@syntax/Button"; @@ -13,7 +13,7 @@ export const CookiesContext = createContext<{ customization: boolean; }; setCookie: (cookieName: ConsentCookies, cookieValue: boolean) => void; - acceptAll: () => void; + setAllCookies: (cookieValue: boolean) => void; isOpen: boolean; setIsOpen: (isOpen: boolean) => void; isSelectionOpen: boolean; @@ -24,7 +24,7 @@ export const CookiesContext = createContext<{ customization: false, }, setCookie: (_cookieName: ConsentCookies, _cookieValue: boolean) => {}, - acceptAll: () => {}, + setAllCookies: () => {}, isOpen: false, setIsOpen: () => {}, isSelectionOpen: false, @@ -44,38 +44,35 @@ export function CookiesContainer(props: CookiesContainerProps) { return !Object.keys(cookies.consent).every((value) => value); }); + const toastPromiseMessages = useMemo( + () => ({ + pending: "Mise à jour des cookies...", + success: "Cookies mis à jour !", + error: "Erreur lors de la mise à jour des cookies", + }), + [], + ); + const handleUpdateCookie = (cookieName: ConsentCookies, cookieValue: boolean) => { setConsentCookies((prev) => ({ ...prev, [cookieName]: cookieValue, })); - toast - .promise(onUpdateConsentCookie(cookieName, cookieValue), { - pending: "Mise à jour des cookies...", - success: "Cookies mis à jour !", - error: "Erreur lors de la mise à jour des cookies", - }) - .then(() => { - setIsOpen(false); - reload(); - }); + toast.promise(onUpdateConsentCookie(cookieName, cookieValue), toastPromiseMessages).then(() => { + setIsOpen(false); + reload(); + }); }; - const handleAcceptAll = () => { + const handleSetAll = (value: boolean) => { setConsentCookies({ analytics: true, customization: true }); - toast - .promise(onAcceptAllConsentCookie(), { - pending: "Acceptation des cookies...", - success: "Cookies acceptés !", - error: "Erreur lors de l'acceptation des cookies", - }) - .then(() => { - setIsOpen(false); - setIsSelectionOpen(false); - reload(); - }); + toast.promise(onSetAllConsentCookie(value), toastPromiseMessages).then(() => { + setIsOpen(false); + setIsSelectionOpen(false); + reload(); + }); }; return ( @@ -83,7 +80,7 @@ export function CookiesContainer(props: CookiesContainerProps) { value={{ cookies: consentCookies, setCookie: handleUpdateCookie, - acceptAll: handleAcceptAll, + setAllCookies: handleSetAll, isOpen, setIsOpen, isSelectionOpen, @@ -171,7 +168,7 @@ function CookieModal() {