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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloudflare-next-intl",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "Optimized Next Intl Package Special for App Router and Cloudflare",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",