Merged in fix/make-user-loyalty-optional (pull request #2044)
fix: Make loyalty optional on user * Optional user loyalty * merge Approved-by: Joakim Jäderberg Approved-by: Linus Flood
This commit is contained in:
committed by
Joakim Jäderberg
parent
cbbde963dc
commit
60af31762b
@@ -15,7 +15,7 @@ export default async function SASxScandicLinkPage({
|
||||
}: PageArgs<LangParams>) {
|
||||
const profile = await getProfileSafely()
|
||||
|
||||
if (!profile) return null
|
||||
if (!profile || !profile.loyalty) return null
|
||||
|
||||
const eurobonusMembership = getEurobonusMembership(profile.loyalty)
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import type { UserProps } from "@/types/components/myPages/user"
|
||||
|
||||
export default async function ExpiringPoints({ user }: UserProps) {
|
||||
const intl = await getIntl()
|
||||
const membership = getFriendsMembership(user.loyalty)
|
||||
const membership = user.loyalty ? getFriendsMembership(user.loyalty) : null
|
||||
|
||||
if (!membership || !membership.pointsToExpire) {
|
||||
// TODO: handle this case?
|
||||
|
||||
@@ -12,7 +12,7 @@ import type { UserProps } from "@/types/components/myPages/user"
|
||||
export default async function Points({ user }: UserProps) {
|
||||
const intl = await getIntl()
|
||||
|
||||
const membership = getFriendsMembership(user.loyalty)
|
||||
const membership = user.loyalty ? getFriendsMembership(user.loyalty) : null
|
||||
|
||||
const nextLevel =
|
||||
membership?.nextLevel && MembershipLevelEnum[membership.nextLevel]
|
||||
|
||||
@@ -72,7 +72,7 @@ export default async function SASLinkedAccount({
|
||||
async function MatchedAccountInfo() {
|
||||
const user = await getProfileWithExtendedPartnerData()
|
||||
|
||||
if (!user || "error" in user) {
|
||||
if (!user || "error" in user || !user.loyalty) {
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import type { Lang } from "@/constants/languages"
|
||||
|
||||
export async function TransferPointsForm({ lang }: { lang: Lang }) {
|
||||
const profile = await getProfileWithExtendedPartnerData()
|
||||
if (!profile) return null
|
||||
if (!profile || !profile.loyalty) return null
|
||||
|
||||
const eurobonusMembership = getEurobonusMembership(profile?.loyalty)
|
||||
if (!eurobonusMembership) return null
|
||||
|
||||
@@ -149,7 +149,7 @@ const authenticatedUser: SafeUser = {
|
||||
language: undefined,
|
||||
lastName: "Booking",
|
||||
membershipNumber: "01234567890123",
|
||||
membership: undefined,
|
||||
membership: null,
|
||||
loyalty: {
|
||||
memberships: [],
|
||||
pointExpirations: [],
|
||||
@@ -180,7 +180,7 @@ const badAuthenticatedUser: SafeUser = {
|
||||
language: undefined,
|
||||
lastName: `Bad name ${Math.random()}`,
|
||||
membershipNumber: "0987654321",
|
||||
membership: undefined,
|
||||
membership: null,
|
||||
loyalty: {
|
||||
memberships: [],
|
||||
pointExpirations: [],
|
||||
|
||||
@@ -15,7 +15,7 @@ import styles from "./sidebar.module.css"
|
||||
export default async function SidebarMyPages() {
|
||||
const intl = await getIntl()
|
||||
const profile = await getProfileSafely()
|
||||
const eurobonusMembership = profile
|
||||
const eurobonusMembership = profile?.loyalty
|
||||
? getEurobonusMembership(profile.loyalty)
|
||||
: null
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@ export const getPrimaryLinks = cache(
|
||||
userLoyalty,
|
||||
}: {
|
||||
lang: Lang
|
||||
userLoyalty: UserLoyalty
|
||||
userLoyalty?: UserLoyalty
|
||||
}): Promise<MyPagesLink[]> => {
|
||||
const intl = await getIntl({ lang })
|
||||
|
||||
const showSASLink = isScandicXSASActive(userLoyalty)
|
||||
const showSASLink = userLoyalty ? isScandicXSASActive(userLoyalty) : false
|
||||
const [showTeamMemberLink] = await safeTry(showTeamMemberCard())
|
||||
|
||||
const menuItems: MyPagesLink[] = [
|
||||
|
||||
@@ -103,7 +103,7 @@ export const getUserSchema = z
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
loyalty: userLoyaltySchema,
|
||||
loyalty: userLoyaltySchema.optional(),
|
||||
}),
|
||||
type: z.string(),
|
||||
}),
|
||||
@@ -111,7 +111,9 @@ export const getUserSchema = z
|
||||
.transform((apiResponse) => {
|
||||
return {
|
||||
...apiResponse.data.attributes,
|
||||
membership: getFriendsMembership(apiResponse.data.attributes.loyalty),
|
||||
membership: apiResponse.data.attributes.loyalty
|
||||
? getFriendsMembership(apiResponse.data.attributes.loyalty)
|
||||
: null,
|
||||
name: `${apiResponse.data.attributes.firstName} ${apiResponse.data.attributes.lastName}`,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -105,7 +105,11 @@ export const userQueryRouter = router({
|
||||
}),
|
||||
membershipLevel: protectedProcedure.query(async function ({ ctx }) {
|
||||
const verifiedData = await getVerifiedUser({ session: ctx.session })
|
||||
if (!verifiedData || "error" in verifiedData) {
|
||||
if (
|
||||
!verifiedData ||
|
||||
"error" in verifiedData ||
|
||||
!verifiedData.data.loyalty
|
||||
) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -118,7 +122,11 @@ export const userQueryRouter = router({
|
||||
}
|
||||
const verifiedData = await getVerifiedUser({ session: ctx.session })
|
||||
|
||||
if (!verifiedData || "error" in verifiedData) {
|
||||
if (
|
||||
!verifiedData ||
|
||||
"error" in verifiedData ||
|
||||
!verifiedData.data.loyalty
|
||||
) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -151,7 +159,11 @@ export const userQueryRouter = router({
|
||||
try {
|
||||
const verifiedUserData = await getVerifiedUser({ session: ctx.session })
|
||||
|
||||
if (!verifiedUserData || "error" in verifiedUserData) {
|
||||
if (
|
||||
!verifiedUserData ||
|
||||
"error" in verifiedUserData ||
|
||||
!verifiedUserData.data.loyalty
|
||||
) {
|
||||
metricsUserTrackingInfo.success({
|
||||
reason: "invalid user data",
|
||||
data: notLoggedInUserTrackingData,
|
||||
@@ -395,7 +407,7 @@ export const userQueryRouter = router({
|
||||
membershipCards: protectedProcedure.query(async function ({ ctx }) {
|
||||
const userData = await getVerifiedUser({ session: ctx.session })
|
||||
|
||||
if (!userData || "error" in userData) {
|
||||
if (!userData || "error" in userData || !userData.data.loyalty) {
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ export function parsedUser(data: User, isMFA: boolean) {
|
||||
language: data.language,
|
||||
lastName: data.lastName,
|
||||
membershipNumber: data.membershipNumber,
|
||||
membership: getFriendsMembership(data.loyalty),
|
||||
membership: data.loyalty ? getFriendsMembership(data.loyalty) : null,
|
||||
loyalty: data.loyalty,
|
||||
name: `${data.firstName} ${data.lastName}`,
|
||||
phoneNumber: data.phoneNumber,
|
||||
|
||||
@@ -27,7 +27,7 @@ export function getFriendsMembership(userLoyalty: UserLoyalty) {
|
||||
|
||||
const friendsMembership = memberships.find(isScandicNativeMembership)
|
||||
|
||||
if (!friendsMembership) return undefined
|
||||
if (!friendsMembership) return null
|
||||
|
||||
const pointExpiration = loyalty.pointExpirations
|
||||
.sort(
|
||||
|
||||
Reference in New Issue
Block a user