Langswitcher as parallel instead of Header. Using promise.all and added some Suspenses

This commit is contained in:
Linus Flood
2024-09-11 19:59:25 +02:00
parent 12178279d3
commit 33ffd781bb
15 changed files with 144 additions and 87 deletions

View File

@@ -1,7 +1,9 @@
import { Suspense } from "react"
import { serverClient } from "@/lib/trpc/server"
import BookingWidget from "@/components/BookingWidget"
import { getLang } from "@/i18n/serverContext"
import LoadingSpinner from "@/components/LoadingSpinner"
export default async function BookingWidgetPage() {
// Get the booking widget show/hide status based on page specific settings
@@ -9,10 +11,10 @@ export default async function BookingWidgetPage() {
await serverClient().contentstack.bookingwidget.getToggle()
return (
<>
<Suspense fallback={<LoadingSpinner />}>
{bookingWidgetToggle && bookingWidgetToggle.hideBookingWidget ? null : (
<BookingWidget />
)}
</>
</Suspense>
)
}

View File

@@ -0,0 +1 @@
export { default } from "../page"

View File

@@ -0,0 +1 @@
export { default } from "../../page"

View File

@@ -0,0 +1 @@
export { default } from "./page"

View File

@@ -0,0 +1 @@
export { default } from "../../page"

View File

@@ -0,0 +1,21 @@
import { Suspense } from "react"
import { serverClient } from "@/lib/trpc/server"
import LanguageSwitcher from "@/components/LanguageSwitcher"
import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params"
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
setLang(params.lang)
const languages = await serverClient().contentstack.languageSwitcher.get()
if (!languages) {
return null
}
return (
<Suspense>
<LanguageSwitcher type="desktopHeader" urls={languages.urls} />
</Suspense>
)
}

View File

@@ -21,9 +21,11 @@ import type { LangParams, LayoutArgs } from "@/types/params"
export default async function RootLayout({
children,
params,
languageSwitcher,
bookingwidget,
}: React.PropsWithChildren<
LayoutArgs<LangParams> & {
languageSwitcher: React.ReactNode
bookingwidget: React.ReactNode
}
>) {
@@ -52,7 +54,7 @@ export default async function RootLayout({
<body>
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
<TrpcProvider>
<Header />
<Header languageSwitcher={languageSwitcher} />
{bookingwidget}
{children}
<ToastHandler />