From 8b45cfe6b2f191caa47bc214d42d37de128b65d3 Mon Sep 17 00:00:00 2001 From: plubber <51789398+ericHgorski@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:40:35 -0500 Subject: [PATCH] refactor: update setCookie function to accept minutes instead of hours and adjust cookie persistence duration --- src/hooks/useFeatureEnabled.ts | 8 +++++--- src/utils/cookies.ts | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/hooks/useFeatureEnabled.ts b/src/hooks/useFeatureEnabled.ts index eb6c9f0b..0ab93040 100644 --- a/src/hooks/useFeatureEnabled.ts +++ b/src/hooks/useFeatureEnabled.ts @@ -5,21 +5,23 @@ import { getCookie, setCookie } from "@/utils/cookies"; export function useFeatureEnabled(featureName: string): boolean { const [isFeatureEnabled, setIsFeatureEnabled] = useState(false); - const rolloutPercentage = parseInt(process.env.NEXT_PUBLIC_FEATURE_ROLLOUT_PERCENTAGE || "0", 10); useEffect(() => { if (typeof window !== "undefined") { let featureEnabled = getCookie(featureName); + const rolloutPercentage = parseInt(process.env.NEXT_PUBLIC_FEATURE_ROLLOUT_PERCENTAGE || "0", 10); if (featureEnabled === undefined) { const randomNumber = Math.random() * 100; featureEnabled = randomNumber < rolloutPercentage ? "true" : "false"; - setCookie(featureName, featureEnabled); + + // persist cookie for 5 minutes + setCookie(featureName, featureEnabled, 5); } setIsFeatureEnabled(featureEnabled === "true"); } - }, [featureName, rolloutPercentage]); + }, [featureName]); return isFeatureEnabled; } diff --git a/src/utils/cookies.ts b/src/utils/cookies.ts index 06fb2a02..07f132c0 100644 --- a/src/utils/cookies.ts +++ b/src/utils/cookies.ts @@ -9,11 +9,11 @@ export const getCookie = (name: string): string | undefined => { return undefined; }; -export const setCookie = (name: string, value: string, hours?: number): void => { +export const setCookie = (name: string, value: string, minutes?: number): void => { let expires = ""; - if (hours) { + if (minutes) { const date = new Date(); - date.setTime(date.getTime() + hours * 60 * 60 * 1000); + date.setTime(date.getTime() + minutes * 60 * 1000); expires = `; expires=${date.toUTCString()}`; } document.cookie = `${name}=${encodeURIComponent(value || "")}${expires}; path=/`;