Langswitcher as parallel instead of Header. Using promise.all and added some Suspenses
This commit is contained in:
@@ -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>
|
||||
)
|
||||
}
|
||||
|
||||
1
app/[lang]/(live)/@languageSwitcher/[...paths]/page.tsx
Normal file
1
app/[lang]/(live)/@languageSwitcher/[...paths]/page.tsx
Normal file
@@ -0,0 +1 @@
|
||||
export { default } from "../page"
|
||||
@@ -0,0 +1 @@
|
||||
export { default } from "../../page"
|
||||
1
app/[lang]/(live)/@languageSwitcher/default.tsx
Normal file
1
app/[lang]/(live)/@languageSwitcher/default.tsx
Normal file
@@ -0,0 +1 @@
|
||||
export { default } from "./page"
|
||||
@@ -0,0 +1 @@
|
||||
export { default } from "../../page"
|
||||
21
app/[lang]/(live)/@languageSwitcher/page.tsx
Normal file
21
app/[lang]/(live)/@languageSwitcher/page.tsx
Normal 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>
|
||||
)
|
||||
}
|
||||
@@ -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 />
|
||||
|
||||
Reference in New Issue
Block a user