diff --git a/app/layout.tsx b/app/layout.tsx
index 8e347040..85156b6c 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -7,7 +7,7 @@ import localFont from "next/font/local";
import { PopUpProvider } from "components/Toast";
import { IdentityProviderServer } from "components/IdentityProviderServer";
import { headers } from "next/headers";
-import { IPLocationProvider } from "components/Providers/IPLocationProvider";
+import { RequestHeadersProvider } from "components/Providers/RequestHeadersProvider";
import { RouteUIStateManager } from "components/RouteUIStateManger";
export const metadata = {
@@ -55,7 +55,10 @@ export default async function RootLayout(
children: React.ReactNode;
}
) {
- let ipLocation = (await headers()).get("X-Vercel-IP-Country");
+ let headersList = await headers();
+ let ipLocation = headersList.get("X-Vercel-IP-Country");
+ let acceptLanguage = headersList.get("accept-language");
+ let ipTimezone = headersList.get("X-Vercel-IP-Timezone");
return (
@@ -77,10 +80,10 @@ export default async function RootLayout(
-
+
{children}
-
+
diff --git a/components/Blocks/RSVPBlock/ContactDetailsForm.tsx b/components/Blocks/RSVPBlock/ContactDetailsForm.tsx
index cd63720f..a1a01222 100644
--- a/components/Blocks/RSVPBlock/ContactDetailsForm.tsx
+++ b/components/Blocks/RSVPBlock/ContactDetailsForm.tsx
@@ -12,7 +12,7 @@ import { ButtonPrimary, ButtonTertiary } from "components/Buttons";
import { Separator } from "components/Layout";
import { createPhoneAuthToken } from "actions/phone_auth/request_phone_auth_token";
import { Input, InputWithLabel } from "components/Input";
-import { IPLocationContext } from "components/Providers/IPLocationProvider";
+import { RequestHeadersContext } from "components/Providers/RequestHeadersProvider";
import { Popover } from "components/Popover";
import { theme } from "tailwind.config";
import { InfoSmall } from "components/Icons/InfoSmall";
@@ -41,10 +41,10 @@ export function ContactDetailsForm(props: {
data.authToken.phone_number === rsvp.phone_number,
)?.plus_ones || 0,
);
- let ipLocation = useContext(IPLocationContext) || "US";
+ let requestHeaders = useContext(RequestHeadersContext);
const [formState, setFormState] = useState({
country_code:
- countryCodes.find((c) => c[1].toUpperCase() === ipLocation)?.[2] || "1",
+ countryCodes.find((c) => c[1].toUpperCase() === (requestHeaders.country || "US"))?.[2] || "1",
phone_number: "",
confirmationCode: "",
});
diff --git a/components/Providers/IPLocationProvider.tsx b/components/Providers/IPLocationProvider.tsx
deleted file mode 100644
index 7b142ca1..00000000
--- a/components/Providers/IPLocationProvider.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-"use client";
-import { createContext } from "react";
-
-export const IPLocationContext = createContext(null);
-export const IPLocationProvider = (props: {
- country: string | null;
- children: React.ReactNode;
-}) => {
- return (
-
- {props.children}
-
- );
-};
diff --git a/components/Providers/RequestHeadersProvider.tsx b/components/Providers/RequestHeadersProvider.tsx
new file mode 100644
index 00000000..f85a374a
--- /dev/null
+++ b/components/Providers/RequestHeadersProvider.tsx
@@ -0,0 +1,29 @@
+"use client";
+import { createContext } from "react";
+
+export type RequestHeaders = {
+ country: string | null;
+ language: string | null;
+ timezone: string | null;
+};
+
+export const RequestHeadersContext = createContext({
+ country: null,
+ language: null,
+ timezone: null,
+});
+
+export const RequestHeadersProvider = (props: {
+ country: string | null;
+ language: string | null;
+ timezone: string | null;
+ children: React.ReactNode;
+}) => {
+ return (
+
+ {props.children}
+
+ );
+};