From e67212bd9496df2b532b5ee77f2d06a46157fb8f Mon Sep 17 00:00:00 2001 From: Niclas Edenvin Date: Wed, 14 Aug 2024 11:00:20 +0000 Subject: [PATCH] Merged in feature/refactor-lang (pull request #387) feat: SW-238 Avoid prop drilling of lang Approved-by: Michael Zetterberg --- app/[lang]/(live)/(protected)/layout.tsx | 12 +++++----- .../my-pages/@breadcrumbs/[...path]/page.tsx | 7 +++++- .../(protected)/my-pages/[...path]/page.tsx | 5 ++++- .../(live)/(protected)/my-pages/layout.tsx | 7 ++---- .../my-pages/profile/@communication/page.tsx | 9 +++++++- .../my-pages/profile/@creditCards/page.tsx | 6 ++++- .../profile/@membershipCards/page.tsx | 8 ++++++- .../my-pages/profile/@profile/edit/page.tsx | 9 +++++++- .../my-pages/profile/@profile/page.tsx | 6 +++-- .../(protected)/my-pages/profile/page.tsx | 6 ++++- .../[contentType]/[uid]/@breadcrumbs/page.tsx | 7 +++++- .../(public)/[contentType]/[uid]/page.tsx | 7 ++++-- .../(live)/(public)/hotelreservation/page.tsx | 4 ++++ .../hotelreservation/select-hotel/page.tsx | 4 +++- .../hotelreservation/select-rate/page.tsx | 5 ++++- .../[...paths]/@languageSwitcher/error.tsx | 7 +----- .../[...paths]/@languageSwitcher/page.tsx | 11 ++++++++-- .../@myPagesMobileDropdown/page.tsx | 4 +++- .../(live)/@header/[...paths]/layout.tsx | 6 +---- app/[lang]/(live)/@header/page.tsx | 10 ++++----- app/[lang]/(live)/layout.tsx | 8 ++++--- .../(live)/middleware-error/404/page.tsx | 7 +++--- .../(live)/middleware-error/[status]/page.tsx | 6 ++++- app/[lang]/(live)/not-found.tsx | 6 ++++- .../current-content-page/page.tsx | 11 ++++++++-- .../@languageSwitcher/error.tsx | 7 +----- .../current-content-page/page.tsx | 5 ++++- .../@myPagesMobileDropdown/error.tsx | 7 +----- .../current-content-page/page.tsx | 9 +++++--- app/[lang]/(live-current)/layout.tsx | 12 +++++----- app/[lang]/(live-current)/not-found.tsx | 10 +-------- app/[lang]/(preview)/layout.tsx | 5 ++++- .../preview/[contentType]/[uid]/page.tsx | 8 +++++-- app/[lang]/(preview-current)/layout.tsx | 9 +++++--- .../preview-current/page.tsx | 8 +++++-- .../webview/[contentType]/[uid]/page.tsx | 8 ++++--- app/[lang]/webview/layout.tsx | 7 ++++-- app/[lang]/webview/refresh/page.tsx | 7 +++++- .../ContentType/HotelPage/HotelPage.tsx | 8 +++---- .../ContentType/LoyaltyPage/LoyaltyPage.tsx | 10 +++------ .../ContentType/Webviews/AccountPage.tsx | 12 +++++----- .../ContentType/Webviews/LoyaltyPage.tsx | 8 +++---- components/Current/Footer/index.tsx | 9 ++++---- .../Header/LanguageSwitcher/Desktop/index.tsx | 7 +++--- .../Header/LanguageSwitcher/Mobile/index.tsx | 8 +++---- .../Current/Header/LanguageSwitcher/index.tsx | 12 ++++------ components/Current/Header/LoginButton.tsx | 18 +++++++-------- components/Current/Header/MainMenu/index.tsx | 4 ++-- .../Header/MyPagesMobileDropdown/index.tsx | 5 ++--- components/Current/Header/TopMenu/index.tsx | 7 +++--- components/Current/Header/index.tsx | 13 +++++------ components/Current/LangPopup/index.tsx | 6 +++-- components/Current/NotFound/index.tsx | 8 +++---- .../DynamicContent/OverviewTable/index.tsx | 6 ++--- .../Loyalty/Blocks/DynamicContent/index.tsx | 13 ++++------- components/Loyalty/Blocks/WebView/index.tsx | 12 +++++----- components/Loyalty/Blocks/index.tsx | 4 +--- .../Loyalty/Sidebar/JoinLoyalty/index.tsx | 5 +---- components/Loyalty/Sidebar/index.tsx | 14 ++---------- components/MyPages/AccountPage/Content.tsx | 6 ++--- .../MyPages/AccountPage/Webview/Content.tsx | 6 ++--- .../Blocks/Benefits/CurrentLevel/index.tsx | 7 +++--- .../Blocks/Benefits/NextLevel/index.tsx | 4 ++-- .../Blocks/Overview/Stats/Points/index.tsx | 6 ++--- .../MyPages/Blocks/Overview/Stats/index.tsx | 5 ++--- components/MyPages/Blocks/Overview/index.tsx | 7 +++--- .../Points/EarnAndBurn/Desktop/Row/index.tsx | 9 +++++--- .../Points/EarnAndBurn/Desktop/index.tsx | 3 +-- .../Points/EarnAndBurn/Mobile/index.tsx | 5 +++-- .../Blocks/Points/EarnAndBurn/index.tsx | 5 ++--- .../MyPages/Blocks/Points/Overview/index.tsx | 6 ++--- .../MyPages/Blocks/Stays/Previous/Client.tsx | 7 +----- .../MyPages/Blocks/Stays/Previous/index.tsx | 6 +---- .../Soonest/EmptyUpcomingStays/index.tsx | 7 +++--- .../MyPages/Blocks/Stays/Soonest/index.tsx | 9 ++------ .../MyPages/Blocks/Stays/StayCard/index.tsx | 4 +++- .../MyPages/Blocks/Stays/Upcoming/Client.tsx | 7 +----- .../Upcoming/EmptyUpcomingStays/index.tsx | 7 +++--- .../MyPages/Blocks/Stays/Upcoming/index.tsx | 8 ++----- components/MyPages/Sidebar/index.tsx | 7 +++--- components/Webviews/LinkToOverview/index.tsx | 7 +++--- hooks/useLang.ts | 12 ++++++++++ i18n/i18n.md | 17 ++++++++++++++ i18n/serverContext.ts | 22 +++++++++++++++++++ lib/trpc/Provider.tsx | 10 ++++----- types/components/current/header/mainMenu.ts | 3 --- types/components/current/header/topMenu.ts | 3 --- types/components/current/languageSwitcher.ts | 1 - types/components/loyalty/sidebar.ts | 4 ++-- .../components/myPages/myPage/accountPage.ts | 3 --- .../components/myPages/myPage/earnAndBurn.ts | 2 -- types/components/myPages/stays/previous.ts | 7 +++--- types/components/myPages/stays/stayCard.ts | 2 -- types/components/myPages/stays/upcoming.ts | 7 +++--- 94 files changed, 378 insertions(+), 322 deletions(-) create mode 100644 hooks/useLang.ts create mode 100644 i18n/i18n.md create mode 100644 i18n/serverContext.ts diff --git a/app/[lang]/(live)/(protected)/layout.tsx b/app/[lang]/(live)/(protected)/layout.tsx index 75d409ee5..024071af3 100644 --- a/app/[lang]/(live)/(protected)/layout.tsx +++ b/app/[lang]/(live)/(protected)/layout.tsx @@ -5,13 +5,11 @@ import { overview } from "@/constants/routes/myPages" import { serverClient } from "@/lib/trpc/server" import { auth } from "@/auth" - -import type { LangParams, LayoutArgs } from "@/types/params" +import { getLang } from "@/i18n/serverContext" export default async function ProtectedLayout({ children, - params, -}: React.PropsWithChildren>) { +}: React.PropsWithChildren) { const session = await auth() /** * Fallback to make sure every route nested in the @@ -19,16 +17,16 @@ export default async function ProtectedLayout({ */ const h = headers() const redirectTo = encodeURIComponent( - h.get("x-url") ?? h.get("x-pathname") ?? overview[params.lang] + h.get("x-url") ?? h.get("x-pathname") ?? overview[getLang()] ) if (!session) { - redirect(`/${params.lang}/login?redirectTo=${redirectTo}`) + redirect(`/${getLang()}/login?redirectTo=${redirectTo}`) } const user = await serverClient().user.get() if (!user || "error" in user) { - redirect(`/${params.lang}/login?redirectTo=${redirectTo}`) + redirect(`/${getLang()}/login?redirectTo=${redirectTo}`) } return children diff --git a/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx b/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx index 666fa6367..41dea7b4a 100644 --- a/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx @@ -1,5 +1,10 @@ import Breadcrumbs from "@/components/MyPages/Breadcrumbs" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default function AllBreadcrumbs({ params }: PageArgs) { + setLang(params.lang) -export default function AllBreadcrumbs() { return } diff --git a/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx b/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx index 7d4eecf73..b35861357 100644 --- a/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx @@ -4,6 +4,7 @@ import Content from "@/components/MyPages/AccountPage/Content" import Title from "@/components/TempDesignSystem/Text/Title" import TrackingSDK from "@/components/TrackingSDK" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" @@ -12,6 +13,8 @@ import type { LangParams, PageArgs } from "@/types/params" export default async function MyPages({ params, }: PageArgs) { + setLang(params.lang) + const accountPageRes = await serverClient().contentstack.accountPage.get() const { formatMessage } = await getIntl() @@ -26,7 +29,7 @@ export default async function MyPages({
{accountPage.heading} {accountPage.content.length ? ( - + ) : (

{formatMessage({ id: "No content published" })}

)} diff --git a/app/[lang]/(live)/(protected)/my-pages/layout.tsx b/app/[lang]/(live)/(protected)/my-pages/layout.tsx index d19162910..e6152ae51 100644 --- a/app/[lang]/(live)/(protected)/my-pages/layout.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/layout.tsx @@ -2,20 +2,17 @@ import Sidebar from "@/components/MyPages/Sidebar" import styles from "./layout.module.css" -import { LangParams, LayoutArgs } from "@/types/params" - export default async function MyPagesLayout({ breadcrumbs, children, - params, -}: React.PropsWithChildren> & { +}: React.PropsWithChildren & { breadcrumbs: React.ReactNode }) { return (
{breadcrumbs}
- + {children}
diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx index 300590bed..fb15f24cc 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx @@ -3,10 +3,17 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function CommunicationSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function CommunicationSlot({ + params, +}: PageArgs) { + setLang(params.lang) + const { formatMessage } = await getIntl() return (
diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx index c30661d9e..6fe1f7e01 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx @@ -7,10 +7,14 @@ import Body from "@/components/TempDesignSystem/Text/Body" import Caption from "@/components/TempDesignSystem/Text/Caption" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function CreditCardSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function CreditCardSlot({ params }: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const creditCards = await serverClient().user.creditCards() diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx index 6da3bb6df..226a33860 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx @@ -5,10 +5,16 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function MembershipCardSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function MembershipCardSlot({ + params, +}: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const membershipCards = await serverClient().user.membershipCards() diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx index fa83ee3b1..a86926356 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx @@ -1,8 +1,15 @@ import { serverClient } from "@/lib/trpc/server" import Form from "@/components/Forms/Edit/Profile" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default async function EditProfileSlot({ + params, +}: PageArgs) { + setLang(params.lang) -export default async function EditProfileSlot() { const user = await serverClient().user.get({ mask: false }) if (!user || "error" in user) { return null diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx index 455dc3159..4c1532cf1 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx @@ -16,12 +16,14 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Title from "@/components/TempDesignSystem/Text/Title" import { getIntl } from "@/i18n" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" +import { LangParams, PageArgs } from "@/types/params" export default async function Profile({ params }: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const user = await serverClient().user.get() if (!user || "error" in user) { @@ -40,7 +42,7 @@ export default async function Profile({ params }: PageArgs) { diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx index 7755289e5..3f17f8f96 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx @@ -3,8 +3,12 @@ import "./profileLayout.css" import { serverClient } from "@/lib/trpc/server" import TrackingSDK from "@/components/TrackingSDK" +import { setLang } from "@/i18n/serverContext" -export default async function ProfilePage() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function ProfilePage({ params }: PageArgs) { + setLang(params.lang) const accountPage = await serverClient().contentstack.accountPage.get() if (!accountPage) { diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx index b1237b8cb..49117ee95 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx @@ -1,5 +1,10 @@ import Breadcrumbs from "@/components/MyPages/Breadcrumbs" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default function PageBreadcrumbs({ params }: PageArgs) { + setLang(params.lang) -export default function PageBreadcrumbs() { return } diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx index 1486bb933..0e8e98a05 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx @@ -3,6 +3,7 @@ import { notFound } from "next/navigation" import ContentPage from "@/components/ContentType/ContentPage" import HotelPage from "@/components/ContentType/HotelPage/HotelPage" import LoyaltyPage from "@/components/ContentType/LoyaltyPage/LoyaltyPage" +import { setLang } from "@/i18n/serverContext" import { ContentTypeParams, @@ -14,13 +15,15 @@ import { export default async function ContentTypePage({ params, }: PageArgs) { + setLang(params.lang) + switch (params.contentType) { case "content-page": return case "loyalty-page": - return + return case "hotel-page": - return + return default: const type: never = params.contentType console.error(`Unsupported content type given: ${type}`) diff --git a/app/[lang]/(live)/(public)/hotelreservation/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/page.tsx index f2f81fc97..425d8aef2 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/page.tsx @@ -1,5 +1,9 @@ +import { setLang } from "@/i18n/serverContext" + import { LangParams, PageArgs } from "@/types/params" export default function HotelReservationPage({ params }: PageArgs) { + setLang(params.lang) + return null } diff --git a/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx index 248d37f47..c28f415bb 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx @@ -6,6 +6,7 @@ import { ChevronRightIcon } from "@/components/Icons" import StaticMap from "@/components/Maps/StaticMap" import Link from "@/components/TempDesignSystem/Link" import { getIntl } from "@/i18n" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" @@ -15,10 +16,11 @@ export default async function SelectHotelPage({ params, }: PageArgs) { const intl = await getIntl() + setLang(params.lang) const { attributes } = await serverClient().hotel.getHotel({ hotelId: "d98c7ab1-ebaa-4102-b351-758daf1ddf55", - language: params.lang, + language: getLang(), }) const hotels = [attributes] diff --git a/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx index 48e3e55c0..162d7dc8c 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx @@ -5,16 +5,19 @@ import BedSelection from "@/components/HotelReservation/SelectRate/BedSelection" import BreakfastSelection from "@/components/HotelReservation/SelectRate/BreakfastSelection" import FlexibilitySelection from "@/components/HotelReservation/SelectRate/FlexibilitySelection" import RoomSelection from "@/components/HotelReservation/SelectRate/RoomSelection" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" import { LangParams, PageArgs } from "@/types/params" export default async function SelectRate({ params }: PageArgs) { + setLang(params.lang) + // TODO: pass the correct hotel ID const { attributes: hotel } = await serverClient().hotel.getHotel({ hotelId: "d98c7ab1-ebaa-4102-b351-758daf1ddf55", - language: params.lang, + language: getLang(), }) const rooms = await serverClient().hotel.getRates({ // TODO: pass the correct hotel ID and all other parameters that should be included in the search diff --git a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx index be9c458c9..1501c40ab 100644 --- a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx @@ -1,14 +1,9 @@ "use client" -import { useParams } from "next/navigation" - import { baseUrls } from "@/constants/routes/baseUrls" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" -import { LangParams } from "@/types/params" - export default function Error() { - const params = useParams() - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx index 960fb22ba..6758eaa7c 100644 --- a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx @@ -1,11 +1,18 @@ import { serverClient } from "@/lib/trpc/server" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default async function LanguageSwitcherRoute({ + params, +}: PageArgs) { + setLang(params.lang) -export default async function LanguageSwitcherRoute() { const data = await serverClient().contentstack.languageSwitcher.get() if (!data) { return null } - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx b/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx index ae2167e9b..8384a267c 100644 --- a/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx @@ -1,13 +1,15 @@ import { serverClient } from "@/lib/trpc/server" import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown" +import { setLang } from "@/i18n/serverContext" import { LangParams, PageArgs } from "@/types/params" export default async function MyPagesMobileDropdownPage({ params, }: PageArgs) { + setLang(params.lang) const navigation = await serverClient().contentstack.myPages.navigation.get() if (!navigation) return null - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/layout.tsx b/app/[lang]/(live)/@header/[...paths]/layout.tsx index 73a42092b..d23bf78bf 100644 --- a/app/[lang]/(live)/@header/[...paths]/layout.tsx +++ b/app/[lang]/(live)/@header/[...paths]/layout.tsx @@ -1,17 +1,13 @@ import Header from "@/components/Current/Header" -import { LangParams, PageArgs } from "@/types/params" - export default function HeaderLayout({ - params, languageSwitcher, myPagesMobileDropdown, -}: PageArgs & { +}: { languageSwitcher: React.ReactNode } & { myPagesMobileDropdown: React.ReactNode }) { return (
diff --git a/app/[lang]/(live)/@header/page.tsx b/app/[lang]/(live)/@header/page.tsx index 9e5e41636..09220fbb6 100644 --- a/app/[lang]/(live)/@header/page.tsx +++ b/app/[lang]/(live)/@header/page.tsx @@ -4,18 +4,18 @@ import { serverClient } from "@/lib/trpc/server" import Header from "@/components/Current/Header" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown" +import { setLang } from "@/i18n/serverContext" import { LangParams, PageArgs } from "@/types/params" export default async function HeaderPage({ params }: PageArgs) { + setLang(params.lang) + const navigation = await serverClient().contentstack.myPages.navigation.get() return (
- } - languageSwitcher={} + myPagesMobileDropdown={} + languageSwitcher={} /> ) } diff --git a/app/[lang]/(live)/layout.tsx b/app/[lang]/(live)/layout.tsx index 620034307..2da54eb0a 100644 --- a/app/[lang]/(live)/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -11,6 +11,7 @@ import VwoScript from "@/components/Current/VwoScript" import { preloadUserTracking } from "@/components/TrackingSDK" import { getIntl } from "@/i18n" import ServerIntlProvider from "@/i18n/Provider" +import { getLang, setLang } from "@/i18n/serverContext" import type { Metadata } from "next" @@ -30,11 +31,12 @@ export default async function RootLayout({ header: React.ReactNode } >) { + setLang(params.lang) preloadUserTracking() const { defaultLocale, locale, messages } = await getIntl() return ( - +