fix: refactor tracking requests

This commit is contained in:
Christel Westerberg
2024-07-15 13:35:00 +02:00
parent c7446032fe
commit 183e1cd6d2
14 changed files with 74 additions and 163 deletions

View File

@@ -125,6 +125,12 @@ export const validateAccountPageSchema = z.object({
url: z.string(),
title: z.string(),
content: z.array(accountPageContentItem),
system: z.object({
uid: z.string(),
locale: z.nativeEnum(Lang),
created_at: z.string(),
updated_at: z.string(),
}),
}),
})
@@ -189,18 +195,3 @@ export const validateAccountPageRefsSchema = z.object({
export type AccountPageRefsDataRaw = z.infer<
typeof validateAccountPageRefsSchema
>
//Tracking
const validateAccountTrackingData = z.object({
account_page: z.object({
system: z.object({
uid: z.string(),
locale: z.string(),
updated_at: z.string(),
created_at: z.string(),
}),
title: z.string().nullable(),
}),
})
export type AccountPageTackingData = z.infer<typeof validateAccountTrackingData>

View File

@@ -2,7 +2,6 @@ import { Lang } from "@/constants/languages"
import {
GetAccountPage,
GetAccountPageRefs,
GetTrackingAccountPage,
} from "@/lib/graphql/Query/AccountPage.graphql"
import { request } from "@/lib/graphql/request"
import { notFound } from "@/server/errors/trpc"
@@ -19,7 +18,6 @@ import {
type AccountPage,
AccountPageDataRaw,
AccountPageRefsDataRaw,
AccountPageTackingData,
validateAccountPageRefsSchema,
validateAccountPageSchema,
} from "./output"
@@ -136,32 +134,18 @@ export const accountPageQueryRouter = router({
content,
} as AccountPage
return accountPage
}),
tracking: contentstackExtendedProcedureUID.query(async ({ ctx }) => {
const { lang, uid } = ctx
const response = await request<AccountPageTackingData>(
GetTrackingAccountPage,
{
locale: lang,
uid,
}
)
if (!response.data) {
throw notFound(response)
}
const accountTrackingData: TrackingSDKPageData = {
pageId: response.data.account_page.system.uid,
lang: response.data.account_page.system.locale as Lang,
publishedDate: response.data.account_page.system.updated_at,
createdDate: response.data.account_page.system.created_at,
const tracking: TrackingSDKPageData = {
pageId: validatedAccountPage.data.account_page.system.uid,
lang: validatedAccountPage.data.account_page.system.locale as Lang,
publishedDate: validatedAccountPage.data.account_page.system.updated_at,
createdDate: validatedAccountPage.data.account_page.system.created_at,
channel: TrackingChannelEnum["scandic-friends"],
pageType: `member${response.data.account_page.title}page`,
}
return accountTrackingData
return {
accountPage,
tracking,
}
}),
})

View File

@@ -193,7 +193,12 @@ export const validateLoyaltyPageSchema = z.object({
heading: z.string().nullable(),
blocks: z.array(loyaltyPageBlockItem).nullable(),
sidebar: z.array(loyaltyPageSidebarItem).nullable(),
system: z.object({ uid: z.string() }),
system: z.object({
uid: z.string(),
locale: z.nativeEnum(Lang),
created_at: z.string(),
updated_at: z.string(),
}),
})
// Block types
@@ -417,17 +422,3 @@ export const validateLoyaltyPageRefsSchema = z.object({
export type LoyaltyPageRefsDataRaw = z.infer<
typeof validateLoyaltyPageRefsSchema
>
//Tracking
const validateLoyaltyTrackingData = z.object({
loyalty_page: z.object({
system: z.object({
uid: z.string(),
locale: z.string(),
updated_at: z.string(),
created_at: z.string(),
}),
}),
})
export type LoyaltyPageTackingData = z.infer<typeof validateLoyaltyTrackingData>

View File

@@ -2,7 +2,6 @@ import { Lang } from "@/constants/languages"
import {
GetLoyaltyPage,
GetLoyaltyPageRefs,
GetTrackingLoyaltyPage,
} from "@/lib/graphql/Query/LoyaltyPage.graphql"
import { request } from "@/lib/graphql/request"
import { notFound } from "@/server/errors/trpc"
@@ -20,7 +19,6 @@ import { removeEmptyObjects } from "../../utils"
import {
LoyaltyPage,
type LoyaltyPageRefsDataRaw,
LoyaltyPageTackingData,
validateLoyaltyPageRefsSchema,
validateLoyaltyPageSchema,
} from "./output"
@@ -228,24 +226,6 @@ export const loyaltyPageQueryRouter = router({
return null
}
// Assert LoyaltyPage type to get correct typings for RTE fields
return validatedLoyaltyPage.data as LoyaltyPage
}),
tracking: contentstackExtendedProcedureUID.query(async ({ ctx }) => {
const { lang, uid } = ctx
const response = await request<LoyaltyPageTackingData>(
GetTrackingLoyaltyPage,
{
locale: lang,
uid,
}
)
if (!response.data) {
throw notFound(response)
}
const loyaltyTrackingData: TrackingSDKPageData = {
pageId: response.data.loyalty_page.system.uid,
lang: response.data.loyalty_page.system.locale as Lang,
@@ -255,6 +235,10 @@ export const loyaltyPageQueryRouter = router({
pageType: "loyaltycontentpage",
}
return loyaltyTrackingData
// Assert LoyaltyPage type to get correct typings for RTE fields
return {
loyaltyPage: validatedLoyaltyPage.data as LoyaltyPage,
tracking: loyaltyTrackingData,
}
}),
})

View File

@@ -248,18 +248,9 @@ export const userQueryRouter = router({
)
if (!previousStaysResponse.ok) {
// switch (apiResponse.status) {
// case 400:
// throw badRequestError(apiResponse)
// case 401:
// throw unauthorizedError(apiResponse)
// case 403:
// throw forbiddenError(apiResponse)
// default:
// throw internalServerError(apiResponse)
// }
console.info(`API Response Failed - Getting Previous Stays`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.info(
`API Response Failed - Getting Previous Stays for tracking user`
)
console.error(previousStaysResponse)
return notLoggedInUserTrackingData
}
@@ -268,8 +259,7 @@ export const userQueryRouter = router({
const verifiedPreviousStaysData =
getStaysSchema.safeParse(previousStaysApiJson)
if (!verifiedPreviousStaysData.success) {
console.info(`Failed to validate Previous Stays Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.info(`Failed to validate Previous Stays Data for tracking user`)
console.error(verifiedPreviousStaysData.error)
return notLoggedInUserTrackingData
}