import { baseUrls } from "@/constants/routes/baseUrls" import { findMyBooking } from "@/constants/routes/findMyBooking" import { hotelreservation } from "@/constants/routes/hotelReservation" import { publicProcedure, router } from "@/server/trpc" import { getUidAndContentTypeByPath } from "@/services/cms/getUidAndContentTypeByPath" import { getLanguageSwitcherInput } from "./input" import { getUrlsOfAllLanguages } from "./utils" import type { LanguageSwitcherData } from "@/types/requests/languageSwitcher" import type { Lang } from "@/constants/languages" export const languageSwitcherQueryRouter = router({ get: publicProcedure .input(getLanguageSwitcherInput) .query(async ({ input }) => { const { pathName, lang } = input const { uid, contentType } = await getUidAndContentTypeByPath(pathName) if (!uid || !contentType) { // we have pages that are not currently routed within contentstack context, // therefor this fix is needed for some of these pages if (Object.values(findMyBooking).includes(pathName)) { const urls: LanguageSwitcherData = {} return { lang, urls: Object.entries(findMyBooking).reduce((acc, [lang, url]) => { acc[lang as Lang] = { url } return urls }, urls), } } if (pathName.startsWith(hotelreservation(lang))) { return { lang, urls: baseUrls } } return { lang, urls: { [lang]: { url: pathName } } } } const urls = await getUrlsOfAllLanguages(lang, uid, contentType) return { lang, urls, } }), })