cloudflare-next-intl 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -11,7 +11,10 @@ export declare const CookieConsentContext: import("react").Context<CookieConsent
|
|
|
11
11
|
* `cookieConsent.privacyPolicyDate` is configured: once a visitor has
|
|
12
12
|
* consented, if their stored consent date predates `privacyPolicyDate`,
|
|
13
13
|
* `privacyPolicyUpdated` becomes `true` until they call
|
|
14
|
-
* `acknowledgePrivacyPolicyUpdate()
|
|
14
|
+
* `acknowledgePrivacyPolicyUpdate()` — or until they navigate to
|
|
15
|
+
* `cookieConsent.privacyPolicyPath`, which auto-acknowledges it (visiting
|
|
16
|
+
* the page counts as having seen the update; skipped entirely when
|
|
17
|
+
* `privacyPolicyPath` is `false`).
|
|
15
18
|
*
|
|
16
19
|
* @param requiresConsent Resolved server-side from
|
|
17
20
|
* `cookieConsent.getCountryCode`/`gdprCountries` — `false` means the
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
|
+
import { usePathname } from 'next/navigation';
|
|
4
5
|
import config from '../../config/intl_config';
|
|
5
6
|
import requireCookieConsentConfig from '../require_config';
|
|
6
7
|
import getCookie from '../../client/functions/get_cookie';
|
|
@@ -25,7 +26,10 @@ function parseConsent(raw) {
|
|
|
25
26
|
* `cookieConsent.privacyPolicyDate` is configured: once a visitor has
|
|
26
27
|
* consented, if their stored consent date predates `privacyPolicyDate`,
|
|
27
28
|
* `privacyPolicyUpdated` becomes `true` until they call
|
|
28
|
-
* `acknowledgePrivacyPolicyUpdate()
|
|
29
|
+
* `acknowledgePrivacyPolicyUpdate()` — or until they navigate to
|
|
30
|
+
* `cookieConsent.privacyPolicyPath`, which auto-acknowledges it (visiting
|
|
31
|
+
* the page counts as having seen the update; skipped entirely when
|
|
32
|
+
* `privacyPolicyPath` is `false`).
|
|
29
33
|
*
|
|
30
34
|
* @param requiresConsent Resolved server-side from
|
|
31
35
|
* `cookieConsent.getCountryCode`/`gdprCountries` — `false` means the
|
|
@@ -59,6 +63,7 @@ export default function CookieConsentProvider({ requiresConsent = true, children
|
|
|
59
63
|
const [consent, setConsentState] = useState(null);
|
|
60
64
|
const [privacyPolicyUpdated, setPrivacyPolicyUpdated] = useState(false);
|
|
61
65
|
const [isMounted, setIsMounted] = useState(false);
|
|
66
|
+
const pathname = usePathname();
|
|
62
67
|
useEffect(() => {
|
|
63
68
|
const storedConsent = parseConsent(getCookie(consentCookieName));
|
|
64
69
|
const autoAccepted = storedConsent === null && !requiresConsent;
|
|
@@ -90,6 +95,15 @@ export default function CookieConsentProvider({ requiresConsent = true, children
|
|
|
90
95
|
setPrivacyPolicyUpdated(false);
|
|
91
96
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
92
97
|
}, []);
|
|
98
|
+
// Visiting the privacy-policy page itself counts as having seen the
|
|
99
|
+
// update — auto-acknowledge instead of also showing the banner there.
|
|
100
|
+
// `pathname` still carries the locale prefix (e.g. `/de/privacy-policy`),
|
|
101
|
+
// so match on a trailing segment rather than strict equality.
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (privacyPolicyUpdated && privacyPolicyPath !== false && pathname.endsWith(privacyPolicyPath)) {
|
|
104
|
+
acknowledgePrivacyPolicyUpdate();
|
|
105
|
+
}
|
|
106
|
+
}, [pathname, privacyPolicyUpdated, privacyPolicyPath, acknowledgePrivacyPolicyUpdate]);
|
|
93
107
|
const contextValue = useMemo(() => ({ consent, privacyPolicyUpdated, isMounted, setConsent, acknowledgePrivacyPolicyUpdate, privacyPolicyPath }), [consent, privacyPolicyUpdated, isMounted, setConsent, acknowledgePrivacyPolicyUpdate, privacyPolicyPath]);
|
|
94
108
|
return (_jsx(CookieConsentContext.Provider, { value: contextValue, children: children }));
|
|
95
109
|
}
|