Using feature flag
This commit is contained in:
@@ -48,3 +48,5 @@ GOOGLE_STATIC_MAP_KEY=""
|
||||
GOOGLE_STATIC_MAP_SIGNATURE_SECRET=""
|
||||
GOOGLE_STATIC_MAP_ID=""
|
||||
GOOGLE_DYNAMIC_MAP_ID=""
|
||||
|
||||
HIDE_FOR_NEXT_RELEASE="true"
|
||||
|
||||
@@ -41,3 +41,4 @@ GOOGLE_STATIC_MAP_KEY="test"
|
||||
GOOGLE_STATIC_MAP_SIGNATURE_SECRET="test"
|
||||
GOOGLE_STATIC_MAP_ID="test"
|
||||
GOOGLE_DYNAMIC_MAP_ID="test"
|
||||
HIDE_FOR_NEXT_RELEASE="test
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { notFound } from "next/navigation"
|
||||
|
||||
import { env } from "@/env/server"
|
||||
|
||||
import ContentPage from "@/components/ContentType/ContentPage"
|
||||
import HotelPage from "@/components/ContentType/HotelPage"
|
||||
import LoyaltyPage from "@/components/ContentType/LoyaltyPage"
|
||||
@@ -25,6 +27,9 @@ export default async function ContentTypePage({
|
||||
case "loyalty-page":
|
||||
return <LoyaltyPage />
|
||||
case "hotel-page":
|
||||
if (env.HIDE_FOR_NEXT_RELEASE) {
|
||||
return notFound()
|
||||
}
|
||||
return <HotelPage />
|
||||
default:
|
||||
const type: never = params.contentType
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import { env } from "@/env/server"
|
||||
|
||||
import CurrentHeader from "@/components/Current/Header"
|
||||
import Header from "@/components/Header"
|
||||
import { setLang } from "@/i18n/serverContext"
|
||||
|
||||
@@ -6,5 +9,9 @@ import { LangParams, PageArgs } from "@/types/params"
|
||||
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
|
||||
setLang(params.lang)
|
||||
|
||||
if (env.HIDE_FOR_NEXT_RELEASE) {
|
||||
return <CurrentHeader />
|
||||
}
|
||||
|
||||
return <Header />
|
||||
}
|
||||
|
||||
@@ -3,10 +3,12 @@ import "@scandic-hotels/design-system/style.css"
|
||||
|
||||
import Script from "next/script"
|
||||
|
||||
import { env } from "@/env/server"
|
||||
import TrpcProvider from "@/lib/trpc/Provider"
|
||||
|
||||
import TokenRefresher from "@/components/Auth/TokenRefresher"
|
||||
import AdobeSDKScript from "@/components/Current/AdobeSDKScript"
|
||||
import CurrentFooter from "@/components/Current/Footer"
|
||||
import VwoScript from "@/components/Current/VwoScript"
|
||||
import Footer from "@/components/Footer"
|
||||
import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
|
||||
@@ -54,10 +56,10 @@ export default async function RootLayout({
|
||||
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
|
||||
<TrpcProvider>
|
||||
{header}
|
||||
{bookingwidget}
|
||||
{!env.HIDE_FOR_NEXT_RELEASE && <>{bookingwidget}</>}
|
||||
{children}
|
||||
<ToastHandler />
|
||||
<Footer />
|
||||
{env.HIDE_FOR_NEXT_RELEASE ? <CurrentFooter /> : <Footer />}
|
||||
<TokenRefresher />
|
||||
</TrpcProvider>
|
||||
</ServerIntlProvider>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import Header from "@/components/Current/Header"
|
||||
import { setLang } from "@/i18n/serverContext"
|
||||
|
||||
import { LangParams, PageArgs } from "@/types/params"
|
||||
|
||||
export default async function HeaderPage({ params }: PageArgs<LangParams>) {
|
||||
setLang(params.lang)
|
||||
|
||||
return <Header />
|
||||
}
|
||||
5
app/[lang]/(live-current)/@header/error.tsx
Normal file
5
app/[lang]/(live-current)/@header/error.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
"use client"
|
||||
|
||||
export default function Error() {
|
||||
return null
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
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<LangParams>) {
|
||||
setLang(params.lang)
|
||||
|
||||
const data = await serverClient().contentstack.languageSwitcher.get()
|
||||
if (!data) {
|
||||
return null
|
||||
}
|
||||
return <LanguageSwitcher urls={data.urls} />
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
"use client"
|
||||
|
||||
import { baseUrls } from "@/constants/routes/baseUrls"
|
||||
|
||||
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
|
||||
|
||||
export default function Error() {
|
||||
return <LanguageSwitcher urls={baseUrls} />
|
||||
}
|
||||
@@ -27,12 +27,9 @@ export const metadata: Metadata = {
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
params,
|
||||
languageSwitcher,
|
||||
myPagesMobileDropdown,
|
||||
header,
|
||||
}: React.PropsWithChildren<
|
||||
LayoutArgs<LangParams> & { languageSwitcher: React.ReactNode } & {
|
||||
myPagesMobileDropdown: React.ReactNode
|
||||
}
|
||||
LayoutArgs<LangParams> & { header: React.ReactNode }
|
||||
>) {
|
||||
setLang(params.lang)
|
||||
const { defaultLocale, locale, messages } = await getIntl()
|
||||
@@ -68,10 +65,7 @@ export default async function RootLayout({
|
||||
<LangPopup />
|
||||
<SkipToMainContent />
|
||||
<ServerIntlProvider intl={{ defaultLocale, locale, messages }}>
|
||||
<Header
|
||||
myPagesMobileDropdown={myPagesMobileDropdown}
|
||||
languageSwitcher={languageSwitcher}
|
||||
/>
|
||||
{header}
|
||||
<BookingWidget />
|
||||
{children}
|
||||
<Footer />
|
||||
|
||||
@@ -4,25 +4,25 @@ import { serverClient } from "@/lib/trpc/server"
|
||||
|
||||
import { getLang } from "@/i18n/serverContext"
|
||||
|
||||
import LanguageSwitcher from "./LanguageSwitcher"
|
||||
import { MainMenu } from "./MainMenu"
|
||||
import MyPagesMobileDropdown from "./MyPagesMobileDropdown"
|
||||
import OfflineBanner from "./OfflineBanner"
|
||||
import TopMenu from "./TopMenu"
|
||||
|
||||
import styles from "./header.module.css"
|
||||
|
||||
export default async function Header({
|
||||
languageSwitcher,
|
||||
myPagesMobileDropdown,
|
||||
}: {
|
||||
languageSwitcher: React.ReactNode
|
||||
myPagesMobileDropdown: React.ReactNode
|
||||
}) {
|
||||
const data = await serverClient().contentstack.base.currentHeader({
|
||||
lang: getLang(),
|
||||
})
|
||||
const user = await serverClient().user.name()
|
||||
export default async function Header() {
|
||||
const [data, user, languages, navigation] = await Promise.all([
|
||||
serverClient().contentstack.base.currentHeader({
|
||||
lang: getLang(),
|
||||
}),
|
||||
serverClient().user.name(),
|
||||
serverClient().contentstack.languageSwitcher.get(),
|
||||
serverClient().contentstack.myPages.navigation.get(),
|
||||
])
|
||||
|
||||
if (!data) {
|
||||
if (!navigation || !languages || !data) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ export default async function Header({
|
||||
frontpageLinkText={frontpage_link_text}
|
||||
homeHref={homeHref}
|
||||
links={top_menu.links}
|
||||
languageSwitcher={languageSwitcher}
|
||||
languageSwitcher={<LanguageSwitcher urls={languages.urls} />}
|
||||
/>
|
||||
<MainMenu
|
||||
frontpageLinkText={frontpage_link_text}
|
||||
@@ -48,8 +48,10 @@ export default async function Header({
|
||||
links={menu.links}
|
||||
logo={logo}
|
||||
topMenuMobileLinks={topMenuMobileLinks}
|
||||
languageSwitcher={languageSwitcher}
|
||||
myPagesMobileDropdown={myPagesMobileDropdown}
|
||||
languageSwitcher={<LanguageSwitcher urls={languages.urls} />}
|
||||
myPagesMobileDropdown={
|
||||
<MyPagesMobileDropdown navigation={navigation} />
|
||||
}
|
||||
bookingHref={homeHref}
|
||||
user={user}
|
||||
/>
|
||||
|
||||
2
env/server.ts
vendored
2
env/server.ts
vendored
@@ -65,6 +65,7 @@ export const env = createEnv({
|
||||
GOOGLE_STATIC_MAP_SIGNATURE_SECRET: z.string(),
|
||||
GOOGLE_DYNAMIC_MAP_ID: z.string(),
|
||||
GOOGLE_STATIC_MAP_ID: z.string(),
|
||||
HIDE_FOR_NEXT_RELEASE: z.string(),
|
||||
},
|
||||
emptyStringAsUndefined: true,
|
||||
runtimeEnv: {
|
||||
@@ -117,5 +118,6 @@ export const env = createEnv({
|
||||
process.env.GOOGLE_STATIC_MAP_SIGNATURE_SECRET,
|
||||
GOOGLE_STATIC_MAP_ID: process.env.GOOGLE_STATIC_MAP_ID,
|
||||
GOOGLE_DYNAMIC_MAP_ID: process.env.GOOGLE_DYNAMIC_MAP_ID,
|
||||
HIDE_FOR_NEXT_RELEASE: process.env.HIDE_FOR_NEXT_RELEASE,
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user