fix: return baseUrls if no uid is given to language switcher query

This commit is contained in:
Christel Westerberg
2024-06-11 16:53:42 +02:00
parent e622be7c86
commit 16ee1bf493
22 changed files with 69 additions and 88 deletions

View File

@@ -2,9 +2,9 @@
import { useParams } from "next/navigation" import { useParams } from "next/navigation"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" import { baseUrls } from "@/constants/routes/baseUrls"
import { baseUrls } from "../../_constants" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import { LangParams } from "@/types/params" import { LangParams } from "@/types/params"

View File

@@ -0,0 +1,9 @@
import { serverClient } from "@/lib/trpc/server"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
export default async function LanguageSwitcherRoute() {
const data = await serverClient().contentstack.languageSwitcher.get()
return <LanguageSwitcher urls={data.urls} lang={data.lang} />
}

View File

@@ -1,13 +0,0 @@
import { serverClient } from "@/lib/trpc/server"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import { LangParams, PageArgs } from "@/types/params"
export default async function LanguageSwitcherRoute({
params,
}: PageArgs<LangParams>) {
const urls = await serverClient().contentstack.config.languageSwitcher()
return <LanguageSwitcher urls={urls} lang={params.lang} />
}

View File

@@ -1,6 +1,5 @@
"use client" "use client"
export default function Error() { export default function Error() {
// Don't return any header if error
return null return null
} }

View File

@@ -1,11 +1,11 @@
import { baseUrls } from "@/constants/routes/baseUrls"
import Header from "@/components/Current/Header" import Header from "@/components/Current/Header"
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import { baseUrls } from "./_constants"
import { LangParams, PageArgs } from "@/types/params" import { LangParams, PageArgs } from "@/types/params"
export async function LanguageSwitcherRoute({ params }: PageArgs<LangParams>) { export default async function HeaderPage({ params }: PageArgs<LangParams>) {
return ( return (
<Header <Header
lang={params.lang} lang={params.lang}

View File

@@ -1,6 +0,0 @@
"use client"
export default function Error({ error }: any) {
// Don't return any content if error
return null
}

View File

@@ -1,14 +0,0 @@
import { serverClient } from "@/lib/trpc/server"
import Desktop from "@/components/Current/Header/LanguageSwitcher/Desktop"
import Mobile from "@/components/Current/Header/LanguageSwitcher/Mobile"
export default async function LanguageSwitcher() {
const data = await serverClient().contentstack.languageSwitcher.get()
return (
<>
<Desktop currentLanguage={data.lang} urls={data.urls} />
<Mobile currentLanguage={data.lang} urls={data.urls} />
</>
)
}

View File

@@ -7,7 +7,6 @@ import TrpcProvider from "@/lib/trpc/Provider"
import AdobeScript from "@/components/Current/AdobeScript" import AdobeScript from "@/components/Current/AdobeScript"
import Footer from "@/components/Current/Footer" import Footer from "@/components/Current/Footer"
import Header from "@/components/Current/Header"
import VwoScript from "@/components/Current/VwoScript" import VwoScript from "@/components/Current/VwoScript"
import { getIntl } from "@/i18n" import { getIntl } from "@/i18n"
import ServerIntlProvider from "@/i18n/Provider" import ServerIntlProvider from "@/i18n/Provider"

View File

@@ -1,14 +1,9 @@
import { serverClient } from "@/lib/trpc/server" import { serverClient } from "@/lib/trpc/server"
import Desktop from "@/components/Current/Header/LanguageSwitcher/Desktop" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
import Mobile from "@/components/Current/Header/LanguageSwitcher/Mobile"
export default async function LanguageSwitcher() { export default async function LanguageSwitcherRoute() {
const data = await serverClient().contentstack.languageSwitcher.get() const data = await serverClient().contentstack.languageSwitcher.get()
return (
<> return <LanguageSwitcher urls={data.urls} lang={data.lang} />
<Desktop currentLanguage={data.lang} urls={data.urls} />
<Mobile currentLanguage={data.lang} urls={data.urls} />
</>
)
} }

View File

@@ -1,3 +0,0 @@
export default function DefaultLanguageSwitcher() {
return null
}

View File

@@ -1,6 +1,14 @@
"use client" "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() { export default function Error() {
// Don't return any content if error const params = useParams<LangParams>()
return null return <LanguageSwitcher urls={baseUrls} lang={params.lang} />
} }

View File

@@ -1,12 +1,13 @@
import { headers } from "next/headers" "use client"
import { Lang } from "@/constants/languages" import { useParams } from "next/navigation"
import NotFound from "@/components/Current/NotFound" import NotFound from "@/components/Current/NotFound"
import { LangParams } from "@/types/params"
export default function NotFoundPage() { export default function NotFoundPage() {
const headersList = headers() const { lang } = useParams<LangParams>()
const lang = headersList.get("x-sh-language") as Lang
return <NotFound lang={lang} /> return <NotFound lang={lang} />
} }

View File

@@ -12,7 +12,7 @@
sans-serif; sans-serif;
} }
.languageSwitcher { .toggle {
display: flex; display: flex;
color: #fff; color: #fff;
padding: 3px 15px; padding: 3px 15px;

View File

@@ -1,8 +1,6 @@
import Desktop from "./Desktop" import Desktop from "./Desktop"
import Mobile from "./Mobile" import Mobile from "./Mobile"
import styles from "./languageSwitcher.module.css"
import { LangParams } from "@/types/params" import { LangParams } from "@/types/params"
import { LanguageSwitcherData } from "@/types/requests/languageSwitcher" import { LanguageSwitcherData } from "@/types/requests/languageSwitcher"
@@ -14,12 +12,8 @@ export default function LanguageSwitcher({
}: LanguageSwitcherProps) { }: LanguageSwitcherProps) {
return ( return (
<> <>
<section className={styles.desktop}> <Desktop currentLanguage={lang} urls={urls} />
<Desktop currentLanguage={lang} urls={urls} /> <Mobile currentLanguage={lang} urls={urls} />
</section>
<section className={styles.mobile}>
<Mobile currentLanguage={lang} urls={urls} />
</section>
</> </>
) )
} }

View File

@@ -49,6 +49,7 @@
line-height: var(--typography-Script-2-lineHeight); line-height: var(--typography-Script-2-lineHeight);
letter-spacing: 0.48px; letter-spacing: 0.48px;
padding: var(--Spacing-x1); padding: var(--Spacing-x1);
margin: 0;
transform: rotate(-3deg); transform: rotate(-3deg);
} }

View File

@@ -1,23 +1,35 @@
query GetDaDeEnUrlsCurrentBlocksPage($uid: String!) { query GetDaDeEnUrlsCurrentBlocksPage($uid: String!) {
de: current_blocks_page(uid: $uid, locale: "de") { de: all_current_blocks_page(where: { uid: $uid }, locale: "de") {
url: original_url items {
url
}
} }
en: current_blocks_page(uid: $uid, locale: "en") { en: all_current_blocks_page(where: { uid: $uid }, locale: "en") {
url: original_url items {
url
}
} }
da: current_blocks_page(uid: $uid, locale: "da") { da: all_current_blocks_page(where: { uid: $uid }, locale: "da") {
url: original_url items {
url
}
} }
} }
query GetFiNoSvUrlsCurrentBlocksPage($uid: String!) { query GetFiNoSvUrlsCurrentBlocksPage($uid: String!) {
fi: current_blocks_page(uid: $uid, locale: "fi") { fi: all_current_blocks_page(where: { uid: $uid }, locale: "fi") {
url: original_url items {
url
}
} }
no: current_blocks_page(uid: $uid, locale: "no") { no: all_current_blocks_page(where: { uid: $uid }, locale: "no") {
url: original_url items {
url
}
} }
sv: current_blocks_page(uid: $uid, locale: "sv") { sv: all_current_blocks_page(where: { uid: $uid }, locale: "sv") {
url: original_url items {
url
}
} }
} }

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,5 @@
import { Lang } from "@/constants/languages" import { Lang } from "@/constants/languages"
import { baseUrls } from "@/constants/routes/baseUrls"
import { batchRequest } from "@/lib/graphql/batchRequest" import { batchRequest } from "@/lib/graphql/batchRequest"
import { import {
GetDaDeEnUrlsAccountPage, GetDaDeEnUrlsAccountPage,
@@ -13,7 +14,7 @@ import {
GetFiNoSvUrlsLoyaltyPage, GetFiNoSvUrlsLoyaltyPage,
} from "@/lib/graphql/Query/LoyaltyPage.graphql" } from "@/lib/graphql/Query/LoyaltyPage.graphql"
import { internalServerError } from "@/server/errors/trpc" import { internalServerError } from "@/server/errors/trpc"
import { contentstackExtendedProcedureUID, router } from "@/server/trpc" import { publicProcedure, router } from "@/server/trpc"
import { generateTag } from "@/utils/generateTag" import { generateTag } from "@/utils/generateTag"
@@ -91,12 +92,14 @@ async function getLanguageSwitcher(options: LanguageSwitcherVariables) {
} }
export const languageSwitcherQueryRouter = router({ export const languageSwitcherQueryRouter = router({
get: contentstackExtendedProcedureUID.query(async ({ ctx }) => { get: publicProcedure.query(async ({ ctx }) => {
if (!ctx.uid || !ctx.lang) {
return { lang: ctx.lang, urls: baseUrls }
}
const res = await getLanguageSwitcher({ const res = await getLanguageSwitcher({
contentType: ctx.contentType!, contentType: ctx.contentType!,
uid: ctx.uid, uid: ctx.uid,
}) })
const urls = Object.keys(res.data).reduce<LanguageSwitcherData>( const urls = Object.keys(res.data).reduce<LanguageSwitcherData>(
(acc, key) => { (acc, key) => {
const item = res.data[key as Lang]?.items[0] const item = res.data[key as Lang]?.items[0]

View File

@@ -2,11 +2,7 @@ import { initTRPC } from "@trpc/server"
import { env } from "@/env/server" import { env } from "@/env/server"
import { import { badRequestError, sessionExpiredError } from "./errors/trpc"
badRequestError,
sessionExpiredError,
unauthorizedError,
} from "./errors/trpc"
import { transformer } from "./transformer" import { transformer } from "./transformer"
import type { Meta } from "@/types/trpc/meta" import type { Meta } from "@/types/trpc/meta"