fix: refactor language switcher
This commit is contained in:
@@ -306,24 +306,3 @@ export const validateLoyaltyPageRefsSchema = z.object({
|
||||
export type LoyaltyPageRefsDataRaw = z.infer<
|
||||
typeof validateLoyaltyPageRefsSchema
|
||||
>
|
||||
|
||||
export const validateLanguageSwitcherData = z.object({
|
||||
en: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
da: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
de: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
fi: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
sv: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
no: z
|
||||
.object({ url: z.string().optional(), isExternal: z.boolean() })
|
||||
.nullable(),
|
||||
})
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
import { Lang } from "@/constants/languages"
|
||||
import { batchRequest } from "@/lib/graphql/batchRequest"
|
||||
import {
|
||||
GetDaDeEnUrlsLoyaltyPage,
|
||||
GetFiNoSvUrlsLoyaltyPage,
|
||||
GetLoyaltyPage,
|
||||
GetLoyaltyPageRefs,
|
||||
} from "@/lib/graphql/Query/LoyaltyPage.graphql"
|
||||
@@ -21,17 +17,12 @@ import { removeEmptyObjects } from "../../utils"
|
||||
import {
|
||||
LoyaltyPage,
|
||||
type LoyaltyPageRefsDataRaw,
|
||||
validateLanguageSwitcherData,
|
||||
validateLoyaltyPageRefsSchema,
|
||||
validateLoyaltyPageSchema,
|
||||
} from "./output"
|
||||
import { getConnections } from "./utils"
|
||||
|
||||
import { LoyaltyBlocksTypenameEnum } from "@/types/components/loyalty/enums"
|
||||
import {
|
||||
LanguageSwitcherData,
|
||||
LanguageSwitcherQueryDataRaw,
|
||||
} from "@/types/requests/languageSwitcher"
|
||||
|
||||
function makeButtonObject(button: any) {
|
||||
return {
|
||||
@@ -181,44 +172,4 @@ export const loyaltyPageQueryRouter = router({
|
||||
// Assert LoyaltyPage type to get correct typings for RTE fields
|
||||
return validatedLoyaltyPage.data as LoyaltyPage
|
||||
}),
|
||||
languageSwitcher: contentstackProcedure.query(async ({ ctx }) => {
|
||||
const variables = {
|
||||
uid: ctx.uid,
|
||||
}
|
||||
|
||||
const res = await batchRequest<LanguageSwitcherQueryDataRaw>([
|
||||
{
|
||||
document: GetDaDeEnUrlsLoyaltyPage,
|
||||
variables,
|
||||
},
|
||||
{
|
||||
document: GetFiNoSvUrlsLoyaltyPage,
|
||||
variables,
|
||||
},
|
||||
])
|
||||
|
||||
const urls = Object.keys(res.data).reduce<LanguageSwitcherData>(
|
||||
(acc, key) => {
|
||||
const item = res.data[key as Lang]?.items[0]
|
||||
const url = item
|
||||
? item.web?.original_url || `/${key}${item.url}`
|
||||
: undefined
|
||||
|
||||
return {
|
||||
...acc,
|
||||
[key]: { url, isExternal: !!item?.web?.original_url },
|
||||
}
|
||||
},
|
||||
{} as LanguageSwitcherData
|
||||
)
|
||||
|
||||
const validatedLanguageSwitcherData =
|
||||
validateLanguageSwitcherData.safeParse(urls)
|
||||
|
||||
if (!validatedLanguageSwitcherData.success) {
|
||||
throw internalServerError(validatedLanguageSwitcherData.error)
|
||||
}
|
||||
|
||||
return { lang: ctx.lang, urls }
|
||||
}),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user