import type { Metadata, Viewport } from "next"; import { cookies, headers } from "next/headers"; import Providers from "./providers"; import "./globals.css"; import DevClickToComponent from "@/components/Componentes/dev-click-to-component"; import TokenSwitcher from "@/components/Componentes/token-switcher"; import { defaultLocale, isLocale, localeDirections, } from "@/translations/config"; import { getInitialMarriageProfile } from "@/hooks/marriage/use-profile-main"; import type { MarriageProfileResponse } from "@/hooks/marriage/types"; const isDevelopment = process.env.NODE_ENV !== "production"; export const metadata: Metadata = { title: "Habib Marriage", description: "Islamic Marriage Platform", }; export const viewport: Viewport = { width: "device-width", initialScale: 1, maximumScale: 1, userScalable: false, viewportFit: "cover", themeColor: "#F5F5F5", interactiveWidget: "overlays-content", }; export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { const [cookieStore, requestHeaders] = await Promise.all([ cookies(), headers(), ]); const headerLocale = requestHeaders.get("x-habib-locale"); const cookieLocale = cookieStore.get("HABIB_LANGUAGE")?.value ?? cookieStore.get("habib_language")?.value; const locale = headerLocale && isLocale(headerLocale) ? headerLocale : isLocale(cookieLocale) ? cookieLocale : defaultLocale; const rawMarriageCookie = cookieStore.get("HABIB_MARRIAGE_DATA")?.value ?? cookieStore.get("habib_marriage_data")?.value; let initialMarriageJson: string | null = null; let initialProfile: MarriageProfileResponse | undefined; if (rawMarriageCookie) { try { const decoded = decodeURIComponent(rawMarriageCookie); const parsed = JSON.parse(decoded); initialMarriageJson = decoded; initialProfile = getInitialMarriageProfile(parsed); console.log("🖥️ [SSR Layout] Parsed rawMarriageCookie successfully:", { status: initialProfile?.status, gender: initialProfile?.gender, has_match_summary: Boolean(initialProfile?.match_summary), match_summary_id: initialProfile?.match_summary?.id, public_info_count: initialProfile?.match_summary?.public_info?.length, }); } catch { try { const parsed = JSON.parse(rawMarriageCookie); initialMarriageJson = rawMarriageCookie; initialProfile = getInitialMarriageProfile(parsed); console.log("🖥️ [SSR Layout] Parsed rawMarriageCookie (non-decoded) successfully:", { status: initialProfile?.status, gender: initialProfile?.gender, has_match_summary: Boolean(initialProfile?.match_summary), match_summary_id: initialProfile?.match_summary?.id, public_info_count: initialProfile?.match_summary?.public_info?.length, }); } catch (e) { console.warn("🖥️ [SSR Layout] Failed to parse rawMarriageCookie:", e); } } } else { console.log("🖥️ [SSR Layout] No rawMarriageCookie found in request cookies"); } return (
{initialMarriageJson && ( )}