diff --git a/components/Current/Header/HeaderFallback/index.tsx b/components/Current/Header/HeaderFallback/index.tsx index 8599beb27..7b6801a19 100644 --- a/components/Current/Header/HeaderFallback/index.tsx +++ b/components/Current/Header/HeaderFallback/index.tsx @@ -1,6 +1,6 @@ import { homeHrefs } from "@/constants/homeHrefs" import { env } from "@/env/server" -import { serverClient } from "@/lib/trpc/server" +import { getCurrentHeader } from "@/lib/trpc/memoizedRequests" import { getLang } from "@/i18n/serverContext" @@ -11,9 +11,7 @@ import TopMenu from "../TopMenu" import styles from "../header.module.css" export default async function HeaderFallback() { - const data = await serverClient().contentstack.base.currentHeader({ - lang: getLang(), - }) + const data = await getCurrentHeader(getLang()) if (!data?.header) { return null diff --git a/components/Current/Header/index.tsx b/components/Current/Header/index.tsx index 59b5e479b..26fe4b654 100644 --- a/components/Current/Header/index.tsx +++ b/components/Current/Header/index.tsx @@ -1,7 +1,11 @@ import { homeHrefs } from "@/constants/homeHrefs" import { env } from "@/env/server" -import { getLanguageSwitcher, getName } from "@/lib/trpc/memoizedRequests" -import { serverClient } from "@/lib/trpc/server" +import { + getCurrentHeader, + getLanguageSwitcher, + getMyPagesNavigation, + getName, +} from "@/lib/trpc/memoizedRequests" import { getLang } from "@/i18n/serverContext" @@ -15,12 +19,10 @@ import styles from "./header.module.css" export default async function Header() { const [data, user, languages, navigation] = await Promise.all([ - serverClient().contentstack.base.currentHeader({ - lang: getLang(), - }), + getCurrentHeader(getLang()), getName(), getLanguageSwitcher(), - serverClient().contentstack.myPages.navigation.get(), + getMyPagesNavigation(), ]) if (!navigation || !languages || !data?.header) { diff --git a/components/Header/MainMenu/MyPagesMenuWrapper/index.tsx b/components/Header/MainMenu/MyPagesMenuWrapper/index.tsx index 0f5a8ef0e..3c2afb9fc 100644 --- a/components/Header/MainMenu/MyPagesMenuWrapper/index.tsx +++ b/components/Header/MainMenu/MyPagesMenuWrapper/index.tsx @@ -1,6 +1,10 @@ import { MembershipLevelEnum } from "@/constants/membershipLevels" import { myPages } from "@/constants/routes/myPages" -import { getMembershipLevelSafely, getName } from "@/lib/trpc/memoizedRequests" +import { + getMembershipLevelSafely, + getMyPagesNavigation, + getName, +} from "@/lib/trpc/memoizedRequests" import { serverClient } from "@/lib/trpc/server" import Link from "@/components/TempDesignSystem/Link" @@ -17,7 +21,7 @@ export default async function MyPagesMenuWrapper() { const lang = getLang() const [intl, myPagesNavigation, user, membership] = await Promise.all([ getIntl(), - serverClient().contentstack.myPages.navigation.get(), + getMyPagesNavigation(), getName(), getMembershipLevelSafely(), ]) diff --git a/components/MyPages/Sidebar/index.tsx b/components/MyPages/Sidebar/index.tsx index b6169639e..5c4de4d2d 100644 --- a/components/MyPages/Sidebar/index.tsx +++ b/components/MyPages/Sidebar/index.tsx @@ -1,7 +1,7 @@ import { Fragment } from "react" import { logout } from "@/constants/routes/handleAuth" -import { serverClient } from "@/lib/trpc/server" +import { getMyPagesNavigation } from "@/lib/trpc/memoizedRequests" import Divider from "@/components/TempDesignSystem/Divider" import Link from "@/components/TempDesignSystem/Link" @@ -12,7 +12,7 @@ import { getLang } from "@/i18n/serverContext" import styles from "./sidebar.module.css" export default async function SidebarMyPages() { - const navigation = await serverClient().contentstack.myPages.navigation.get() + const navigation = await getMyPagesNavigation() const { formatMessage } = await getIntl() return ( diff --git a/components/Sidebar/JoinLoyalty/index.tsx b/components/Sidebar/JoinLoyalty/index.tsx index 31465ae78..13b3a91c5 100644 --- a/components/Sidebar/JoinLoyalty/index.tsx +++ b/components/Sidebar/JoinLoyalty/index.tsx @@ -19,10 +19,10 @@ export default async function JoinLoyaltyContact({ block, }: JoinLoyaltyContactProps) { const intl = await getIntl() - const username = await getName() + const user = await getName() // Check if we have user, that means we are logged in. - if (username) { + if (user) { return null } return ( diff --git a/components/Sidebar/MyPagesNavigation.tsx b/components/Sidebar/MyPagesNavigation.tsx index 62d62cb82..9f1bc3cec 100644 --- a/components/Sidebar/MyPagesNavigation.tsx +++ b/components/Sidebar/MyPagesNavigation.tsx @@ -3,10 +3,10 @@ import { getName } from "@/lib/trpc/memoizedRequests" import MyPagesSidebar from "@/components/MyPages/Sidebar" export default async function MyPagesNavigation() { - const username = await getName() + const user = await getName() // Check if we have user, that means we are logged in andt the My Pages menu can show. - if (!username) { + if (!user) { return null } return diff --git a/lib/trpc/memoizedRequests/index.ts b/lib/trpc/memoizedRequests/index.ts index 2bf70a9e9..d09349a8c 100644 --- a/lib/trpc/memoizedRequests/index.ts +++ b/lib/trpc/memoizedRequests/index.ts @@ -1,5 +1,7 @@ import { cache } from "react" +import { Lang } from "@/constants/languages" + import { serverClient } from "../server" export const getLocations = cache(async function getMemoizedLocations() { @@ -10,6 +12,10 @@ export const getProfile = cache(async function getMemoizedProfile() { return serverClient().user.get() }) +export const getName = cache(async function getMemoizedName() { + return serverClient().user.name() +}) + export const getProfileSafely = cache( async function getMemoizedProfileSafely() { return serverClient().user.getSafely() @@ -40,10 +46,6 @@ export const getMembershipCards = cache( } ) -export const getName = cache(async function getMemoizedName() { - return serverClient().user.name() -}) - export const getUserTracking = cache(async function getMemoizedUserTracking() { return serverClient().user.tracking() }) @@ -66,6 +68,18 @@ export const getHeader = cache(async function getMemoizedHeader() { return serverClient().contentstack.base.header() }) +export const getCurrentHeader = cache(async function getMemoizedCurrentHeader( + lang: Lang +) { + return serverClient().contentstack.base.currentHeader({ lang }) +}) + +export const getMyPagesNavigation = cache( + async function getMemoizedMyPagesNavigation() { + return serverClient().contentstack.myPages.navigation.get() + } +) + export const getLanguageSwitcher = cache( async function getMemoizedLanguageSwitcher() { return serverClient().contentstack.languageSwitcher.get() diff --git a/server/routers/contentstack/base/query.ts b/server/routers/contentstack/base/query.ts index 3218b8bb6..d312d6042 100644 --- a/server/routers/contentstack/base/query.ts +++ b/server/routers/contentstack/base/query.ts @@ -1,3 +1,5 @@ +import { cache } from "react" + import { Lang } from "@/constants/languages" import { GetContactConfig } from "@/lib/graphql/Query/ContactConfig.graphql" import { @@ -92,7 +94,7 @@ import type { GetSiteConfigRefData, } from "@/types/trpc/routers/contentstack/siteConfig" -async function getContactConfig(lang: Lang) { +const getContactConfig = cache(async (lang: Lang) => { getContactConfigCounter.add(1, { lang }) console.info( "contentstack.contactConfig start", @@ -153,7 +155,7 @@ async function getContactConfig(lang: Lang) { JSON.stringify({ query: { lang } }) ) return validatedContactConfigConfig.data.all_contact_config.items[0] -} +}) export const baseQueryRouter = router({ contact: contentstackBaseProcedure.query(async ({ ctx }) => {