fix(SW-705): Added Suspense to LanguageSwitcher

This commit is contained in:
Pontus Dreij
2024-11-29 16:16:35 +01:00
parent 6e1806fb29
commit 9d4c6eb25d
3 changed files with 32 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
"use client" "use client"
import { usePathname } from "next/navigation" import { usePathname } from "next/navigation"
import { Suspense } from "react"
import { useIntl } from "react-intl" import { useIntl } from "react-intl"
import { logout } from "@/constants/routes/handleAuth" import { logout } from "@/constants/routes/handleAuth"
@@ -9,6 +10,7 @@ import useDropdownStore from "@/stores/main-menu"
import Image from "@/components/Image" import Image from "@/components/Image"
import LoginButton from "@/components/LoginButton" import LoginButton from "@/components/LoginButton"
import Avatar from "@/components/MyPages/Avatar" import Avatar from "@/components/MyPages/Avatar"
import SkeletonShimmer from "@/components/SkeletonShimmer"
import Link from "@/components/TempDesignSystem/Link" import Link from "@/components/TempDesignSystem/Link"
import useLang from "@/hooks/useLang" import useLang from "@/hooks/useLang"
import { trackClick } from "@/utils/tracking" import { trackClick } from "@/utils/tracking"
@@ -112,16 +114,14 @@ export function MainMenu({
> >
<ul className={styles.linkRow}> <ul className={styles.linkRow}>
{!isThreeStaticPagesPathnames && !!user ? ( {!isThreeStaticPagesPathnames && !!user ? (
<> <li className={styles.mobileLinkRow}>
<li className={styles.mobileLinkRow}> <Link
<Link className={styles.mobileLinkButton}
className={styles.mobileLinkButton} href={myPages[lang]}
href={myPages[lang]} >
> {intl.formatMessage({ id: "My pages" })}
{intl.formatMessage({ id: "My pages" })} </Link>
</Link> </li>
</li>
</>
) : ( ) : (
<> <>
<li> <li>
@@ -190,7 +190,13 @@ export function MainMenu({
))} ))}
</ul> </ul>
{languageSwitcher ? ( {languageSwitcher ? (
<li className={styles.mobileLi}>{languageSwitcher}</li> <li className={styles.mobileLi}>
<Suspense
fallback={<SkeletonShimmer height="20px" width="10ch" />}
>
{languageSwitcher}
</Suspense>
</li>
) : null} ) : null}
{!!user ? ( {!!user ? (
<li className={`${styles.mobileLi} ${styles.logout}`}> <li className={`${styles.mobileLi} ${styles.logout}`}>

View File

@@ -1,8 +1,11 @@
import { Suspense } from "react"
import { logout } from "@/constants/routes/handleAuth" import { logout } from "@/constants/routes/handleAuth"
import { overview } from "@/constants/routes/myPages" import { overview } from "@/constants/routes/myPages"
import { getName } from "@/lib/trpc/memoizedRequests" import { getName } from "@/lib/trpc/memoizedRequests"
import LoginButton from "@/components/LoginButton" import LoginButton from "@/components/LoginButton"
import SkeletonShimmer from "@/components/SkeletonShimmer"
import Link from "@/components/TempDesignSystem/Link" import Link from "@/components/TempDesignSystem/Link"
import { getIntl } from "@/i18n" import { getIntl } from "@/i18n"
import { getLang } from "@/i18n/serverContext" import { getLang } from "@/i18n/serverContext"
@@ -32,7 +35,13 @@ export default async function TopMenu({
<ul className={styles.list}> <ul className={styles.list}>
{languageSwitcher ? ( {languageSwitcher ? (
<li className={styles.langSwitcher}>{languageSwitcher}</li> <li className={styles.langSwitcher}>
<Suspense
fallback={<SkeletonShimmer height="20px" width="10ch" />}
>
{languageSwitcher}
</Suspense>
</li>
) : null} ) : null}
{links.map(({ link }, i) => ( {links.map(({ link }, i) => (

View File

@@ -1,3 +1,5 @@
import { Suspense } from "react"
import { getFooter, getLanguageSwitcher } from "@/lib/trpc/memoizedRequests" import { getFooter, getLanguageSwitcher } from "@/lib/trpc/memoizedRequests"
import { getIconByIconName } from "@/components/Icons/get-icon-by-icon-name" import { getIconByIconName } from "@/components/Icons/get-icon-by-icon-name"
@@ -86,7 +88,9 @@ export default async function FooterDetails() {
)} )}
</nav> </nav>
{languages?.urls ? ( {languages?.urls ? (
<LanguageSwitcher type="footer" urls={languages.urls} /> <Suspense fallback={<SkeletonShimmer height="20px" width="10ch" />}>
<LanguageSwitcher type="footer" urls={languages.urls} />
</Suspense>
) : null} ) : null}
</div> </div>
</div> </div>