import { GetAccountPageBreadcrumbs, GetAccountPageBreadcrumbsRefs, } from "@/lib/graphql/Query/BreadcrumbsAccountPage.graphql" import { GetLoyaltyPageBreadcrumbs, GetLoyaltyPageBreadcrumbsRefs, } from "@/lib/graphql/Query/BreadcrumbsLoyaltyPage.graphql" import { request } from "@/lib/graphql/request" import { internalServerError, notFound } from "@/server/errors/trpc" import { contentstackProcedure, router } from "@/server/trpc" import { generateRefsResponseTag, generateTag, generateTags, } from "@/utils/generateTag" import { removeMultipleSlashes } from "@/utils/url" import { getBreadcrumbsSchema, validateBreadcrumbsConstenstackSchema, validateBreadcrumbsConstenstackSchemaLoyalty, validateBreadcrumbsRefsConstenstackSchema, validateBreadcrumbsRefsConstenstackSchemaLoyalty, } from "./output" import { affix, getConnections, getConnectionsLoyalty, homeBreadcrumbs, } from "./utils" import type { GetAccountPageBreadcrumbsData, GetAccountPageBreadcrumbsRefsData, GetLoyaltyPageBreadcrumbsData, GetLoyaltyPageBreadcrumbsRefsData, } from "@/types/requests/myPages/breadcrumbs" export const breadcrumbsQueryRouter = router({ get: contentstackProcedure.query(async ({ ctx }) => { const refsResponse = await request( GetAccountPageBreadcrumbsRefs, { locale: ctx.lang, url: ctx.pathname }, { next: { tags: [generateRefsResponseTag(ctx.lang, ctx.pathname, affix)], }, } ) console.log(ctx.pathname) console.log(refsResponse.data.all_account_page) if (!refsResponse.data) { throw notFound(refsResponse) } const validatedRefsData = validateBreadcrumbsRefsConstenstackSchema.safeParse(refsResponse.data) if (!validatedRefsData.success) { throw internalServerError(validatedRefsData.error) } console.log(validatedRefsData.data) const connections = getConnections(validatedRefsData.data) console.log(connections) const tags = generateTags(ctx.lang, connections) console.log(tags) const page = validatedRefsData.data.all_account_page.items[0] console.log(page) tags.push(generateTag(ctx.lang, page.system.uid, affix)) console.log(tags) const response = await request( GetAccountPageBreadcrumbs, { locale: ctx.lang, url: ctx.pathname }, { next: { tags } } ) console.log(response.data) if (!response.data) { throw notFound(response) } const validatedBreadcrumbsData = validateBreadcrumbsConstenstackSchema.safeParse(response.data) if (!validatedBreadcrumbsData.success) { throw internalServerError(validatedBreadcrumbsData.error) } const parentBreadcrumbs = validatedBreadcrumbsData.data.all_account_page.items[0].breadcrumbs.parentsConnection.edges.map( (breadcrumb) => { return { href: removeMultipleSlashes( `/${breadcrumb.node.system.locale}/${breadcrumb.node.url}` ), title: breadcrumb.node.breadcrumbs.title, uid: breadcrumb.node.system.uid, } } ) const pageBreadcrumb = validatedBreadcrumbsData.data.all_account_page.items.map((breadcrumb) => { return { title: breadcrumb.breadcrumbs.title, uid: breadcrumb.system.uid, } }) const breadcrumbs = [ homeBreadcrumbs[ctx.lang], parentBreadcrumbs, pageBreadcrumb, ].flat() console.log(breadcrumbs) const validatedBreadcrumbs = getBreadcrumbsSchema.safeParse(breadcrumbs) if (!validatedBreadcrumbs.success) { throw internalServerError(validatedBreadcrumbs.error) } return validatedBreadcrumbs.data }), loyalty: contentstackProcedure.query(async ({ ctx }) => { console.log("HEJ", ctx) const refsResponse = await request( GetLoyaltyPageBreadcrumbsRefs, { locale: ctx.lang, url: ctx.pathname }, { next: { tags: [generateRefsResponseTag(ctx.lang, ctx.pathname, affix)], }, } ) console.log(ctx.pathname) console.log(refsResponse.data.all_loyalty_page) if (!refsResponse.data) { throw notFound(refsResponse) } /*if (refsResponse.data.all_loyalty_page.items) { Object.assign( refsResponse.data.all_loyalty_page.items, refsResponse.data.all_loyalty_page.items[0].web ) delete refsResponse.data.all_loyalty_page.items[0].web }*/ console.log( refsResponse.data.all_loyalty_page.items[0].web.breadcrumbss .parentsConnection ) const validatedRefsData = validateBreadcrumbsRefsConstenstackSchemaLoyalty.safeParse( refsResponse.data ) console.log("VALI", validatedRefsData) if (!validatedRefsData.success) { throw internalServerError(validatedRefsData.error) } console.log( validatedRefsData.data.all_loyalty_page.items[0].web.breadcrumbss ) const connections = getConnectionsLoyalty(validatedRefsData.data) console.log(connections) const tags = generateTags(ctx.lang, connections) console.log(tags) const page = validatedRefsData.data.all_loyalty_page.items[0] console.log(page) tags.push(generateTag(ctx.lang, page.system.uid, affix)) console.log(tags) const response = await request( GetLoyaltyPageBreadcrumbs, { locale: ctx.lang, url: ctx.pathname }, { next: { tags } } ) console.log(response.data) if (!response.data) { throw notFound(response) } const validatedBreadcrumbsData = validateBreadcrumbsConstenstackSchemaLoyalty.safeParse(response.data) console.log(validatedBreadcrumbsData) if (!validatedBreadcrumbsData.success) { throw internalServerError(validatedBreadcrumbsData.error) } const parentBreadcrumbs = validatedBreadcrumbsData.data.all_loyalty_page.items[0].web.breadcrumbss.parentsConnection.edges.map( (breadcrumb) => { return { href: removeMultipleSlashes( `/${breadcrumb.node.system.locale}/${breadcrumb.node.url}` ), title: breadcrumb.node.breadcrumbs.title, uid: breadcrumb.node.system.uid, } } ) const pageBreadcrumb = validatedBreadcrumbsData.data.all_loyalty_page.items.map((breadcrumb) => { return { title: breadcrumb.web.breadcrumbss.title, uid: breadcrumb.system.uid, } }) const breadcrumbs = [ homeBreadcrumbs[ctx.lang], parentBreadcrumbs, pageBreadcrumb, ].flat() console.log(breadcrumbs) const validatedBreadcrumbs = getBreadcrumbsSchema.safeParse(breadcrumbs) if (!validatedBreadcrumbs.success) { throw internalServerError(validatedBreadcrumbs.error) } return validatedBreadcrumbs.data }), })