refactor(banners): replace js-cookie with cookies-next for cookie management

This commit is contained in:
Marco Pedone 2026-01-14 13:38:18 +01:00
parent ceb782888c
commit 0ac20c65f4
3 changed files with 10 additions and 27 deletions

View file

@ -52,7 +52,6 @@
"html2canvas-pro": "^1.5.13", "html2canvas-pro": "^1.5.13",
"ioredis": "^5.7.0", "ioredis": "^5.7.0",
"jose": "^6.0.12", "jose": "^6.0.12",
"js-cookie": "^3.0.5",
"jspdf": "^3.0.4", "jspdf": "^3.0.4",
"kysely": "^0.28.9", "kysely": "^0.28.9",
"kysely-plugin-serialize": "^0.8.2", "kysely-plugin-serialize": "^0.8.2",
@ -103,7 +102,6 @@
"@hookform/devtools": "^4.4.0", "@hookform/devtools": "^4.4.0",
"@react-email/preview-server": "^4.2.8", "@react-email/preview-server": "^4.2.8",
"@total-typescript/ts-reset": "^0.6.1", "@total-typescript/ts-reset": "^0.6.1",
"@types/js-cookie": "^3.0.6",
"@types/leaflet": "^1.9.20", "@types/leaflet": "^1.9.20",
"@types/node": "^24.2.0", "@types/node": "^24.2.0",
"@types/nodemailer": "^7.0.5", "@types/nodemailer": "^7.0.5",
@ -8316,13 +8314,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/js-cookie": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz",
"integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/json-schema": { "node_modules/@types/json-schema": {
"version": "7.0.15", "version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@ -12154,15 +12145,6 @@
"url": "https://github.com/sponsors/panva" "url": "https://github.com/sponsors/panva"
} }
}, },
"node_modules/js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
"license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",

View file

@ -64,7 +64,6 @@
"html2canvas-pro": "^1.5.13", "html2canvas-pro": "^1.5.13",
"ioredis": "^5.7.0", "ioredis": "^5.7.0",
"jose": "^6.0.12", "jose": "^6.0.12",
"js-cookie": "^3.0.5",
"jspdf": "^3.0.4", "jspdf": "^3.0.4",
"kysely": "^0.28.9", "kysely": "^0.28.9",
"kysely-plugin-serialize": "^0.8.2", "kysely-plugin-serialize": "^0.8.2",
@ -115,7 +114,6 @@
"@hookform/devtools": "^4.4.0", "@hookform/devtools": "^4.4.0",
"@react-email/preview-server": "^4.2.8", "@react-email/preview-server": "^4.2.8",
"@total-typescript/ts-reset": "^0.6.1", "@total-typescript/ts-reset": "^0.6.1",
"@types/js-cookie": "^3.0.6",
"@types/leaflet": "^1.9.20", "@types/leaflet": "^1.9.20",
"@types/node": "^24.2.0", "@types/node": "^24.2.0",
"@types/nodemailer": "^7.0.5", "@types/nodemailer": "^7.0.5",

View file

@ -1,4 +1,5 @@
import Cookies from "js-cookie"; import { getCookie, setCookie } from "cookies-next/client";
import { add } from "date-fns";
import { X } from "lucide-react"; import { X } from "lucide-react";
import Link from "next/link"; import Link from "next/link";
import { type MouseEvent, useEffect, useState } from "react"; import { type MouseEvent, useEffect, useState } from "react";
@ -47,16 +48,18 @@ export const BannerFactory = (bannerData: Banners) => {
useEffect(() => { useEffect(() => {
if (bannerData.is_unskippable === false) { if (bannerData.is_unskippable === false) {
const cookievalue = Cookies.get(NEW_BANNER_KEY) !== "true"; const cookievalue = getCookie(NEW_BANNER_KEY) !== "true";
setIsBannerToShow(cookievalue); setIsBannerToShow(cookievalue);
} }
}, []); }, []);
const onClick = (e: MouseEvent<HTMLButtonElement>) => { const onClick = (e: MouseEvent<HTMLButtonElement>) => {
e.preventDefault(); e.preventDefault();
setCookie(NEW_BANNER_KEY, "true", {
Cookies.set(NEW_BANNER_KEY, "true", { expires: add(new Date(), {
expires: bannerData.hide_duration || defaultHideDuration, days: bannerData.hide_duration || defaultHideDuration,
}),
}); });
setIsBannerToShow(false); setIsBannerToShow(false);
}; };
@ -66,7 +69,7 @@ export const BannerFactory = (bannerData: Banners) => {
} }
return ( return (
<div className={cn("bg-indigo-600", bgColor)}> <div className={cn("bg-indigo-600", bgColor)}>
<div className="mx-auto flex max-w-screen-xl items-start justify-between px-4 py-3 text-white sm:items-center md:px-8"> <div className="mx-auto flex max-w-7xl items-start justify-between px-4 py-3 text-white sm:items-center md:px-8">
<div className="flex flex-1 items-start justify-center gap-x-4 sm:items-center"> <div className="flex flex-1 items-start justify-center gap-x-4 sm:items-center">
<div <div
className={cn( className={cn(