feat: guest information form enter details

This commit is contained in:
Simon Emanuelsson
2024-10-03 11:12:36 +02:00
parent 4103e3fb37
commit 451d461c7f
50 changed files with 834 additions and 442 deletions

View File

@@ -551,10 +551,13 @@ const linkSchema = z
})
.transform((data) => {
if (data.linkConnection.edges.length) {
const link = pageLinks.transform(data.linkConnection.edges[0].node)
if (link) {
return {
link,
const linkNode = data.linkConnection.edges[0].node
if (linkNode) {
const link = pageLinks.transform(linkNode)
if (link) {
return {
link,
}
}
}
}

View File

@@ -25,10 +25,13 @@ export const linkConnectionSchema = z
})
.transform((data) => {
if (data.linkConnection.edges.length) {
const link = pageLinks.transform(data.linkConnection.edges[0].node)
if (link) {
return {
link,
const linkNode = data.linkConnection.edges[0].node
if (linkNode) {
const link = pageLinks.transform(linkNode)
if (link) {
return {
link,
}
}
}
}
@@ -54,17 +57,20 @@ export const linkConnectionRefs = z
linkConnection: z.object({
edges: z.array(
z.object({
node: linkRefsUnionSchema,
node: discriminatedUnion(linkRefsUnionSchema.options),
})
),
}),
})
.transform((data) => {
if (data.linkConnection.edges.length) {
const link = pageLinks.transformRef(data.linkConnection.edges[0].node)
if (link) {
return {
link,
const linkNode = data.linkConnection.edges[0].node
if (linkNode) {
const link = pageLinks.transformRef(linkNode)
if (link) {
return {
link,
}
}
}
}

View File

@@ -1,4 +1,5 @@
import { metrics } from "@opentelemetry/api"
import { SafeParseSuccess } from "zod"
import * as api from "@/lib/api"
import {
@@ -27,8 +28,8 @@ import type {
LoginType,
TrackingSDKUserData,
} from "@/types/components/tracking"
import { BlocksEnums } from "@/types/enums/blocks"
import { Transactions } from "@/types/enums/transactions"
import { User } from "@/types/user"
import type { MembershipLevel } from "@/constants/membershipLevels"
// OpenTelemetry metrics: User
@@ -161,6 +162,51 @@ export async function getVerifiedUser({ session }: { session: Session }) {
return verifiedData
}
function parsedUser(data: User, isMFA: boolean) {
const country = countries.find((c) => c.code === data.address.countryCode)
const user = {
address: {
city: data.address.city,
country: country?.name ?? "",
countryCode: data.address.countryCode,
streetAddress: data.address.streetAddress,
zipCode: data.address.zipCode,
},
dateOfBirth: data.dateOfBirth,
email: data.email,
firstName: data.firstName,
language: data.language,
lastName: data.lastName,
membership: getMembership(data.memberships),
memberships: data.memberships,
name: `${data.firstName} ${data.lastName}`,
phoneNumber: data.phoneNumber,
profileId: data.profileId,
}
if (!isMFA) {
if (user.address.city) {
user.address.city = maskValue.text(user.address.city)
}
if (user.address.streetAddress) {
user.address.streetAddress = maskValue.text(user.address.streetAddress)
}
user.address.zipCode = data.address?.zipCode
? maskValue.text(data.address.zipCode)
: ""
user.dateOfBirth = maskValue.all(user.dateOfBirth)
user.email = maskValue.email(user.email)
user.phoneNumber = user.phoneNumber ? maskValue.phone(user.phoneNumber) : ""
}
return user
}
export const userQueryRouter = router({
get: protectedProcedure
.use(async function (opts) {
@@ -184,57 +230,25 @@ export const userQueryRouter = router({
return data
}
const verifiedData = data
const country = countries.find(
(c) => c.code === verifiedData.data.address.countryCode
)
const user = {
address: {
city: verifiedData.data.address.city,
country: country?.name ?? "",
countryCode: verifiedData.data.address.countryCode,
streetAddress: verifiedData.data.address.streetAddress,
zipCode: verifiedData.data.address.zipCode,
},
dateOfBirth: verifiedData.data.dateOfBirth,
email: verifiedData.data.email,
firstName: verifiedData.data.firstName,
language: verifiedData.data.language,
lastName: verifiedData.data.lastName,
membership: getMembership(verifiedData.data.memberships),
memberships: verifiedData.data.memberships,
name: `${verifiedData.data.firstName} ${verifiedData.data.lastName}`,
phoneNumber: verifiedData.data.phoneNumber,
profileId: verifiedData.data.profileId,
}
if (!ctx.isMFA) {
if (user.address.city) {
user.address.city = maskValue.text(user.address.city)
}
if (user.address.streetAddress) {
user.address.streetAddress = maskValue.text(
user.address.streetAddress
)
}
user.address.zipCode = verifiedData.data.address?.zipCode
? maskValue.text(verifiedData.data.address.zipCode)
: ""
user.dateOfBirth = maskValue.all(user.dateOfBirth)
user.email = maskValue.email(user.email)
user.phoneNumber = user.phoneNumber
? maskValue.phone(user.phoneNumber)
: ""
}
return user
return parsedUser(data.data, ctx.isMFA)
}),
getSafely: safeProtectedProcedure.query(async function getUser({ ctx }) {
if (!ctx.session) {
return null
}
const data = await getVerifiedUser({ session: ctx.session })
if (!data) {
return null
}
if ("error" in data) {
return data
}
return parsedUser(data.data, true)
}),
name: safeProtectedProcedure.query(async function ({ ctx }) {
if (!ctx.session) {
return null