Merged in feat/LOY-134-add-informative-reward-modal (pull request #1307)

feat(LOY-134): display informative rewards and modal

Approved-by: Chuma Mcphoy (We Ahead)
This commit is contained in:
Christian Andolf
2025-02-13 10:13:35 +00:00
9 changed files with 78 additions and 59 deletions

View File

@@ -181,17 +181,21 @@ export type RewardWithRedeem = CMSRewardWithRedeem & {
}
// New endpoint related types and schemas.
const BenefitReward = z.object({
const BaseReward = z.object({
title: z.string().optional(),
id: z.string().optional(),
redeemLocation: z.string().optional(),
rewardId: z.string().optional(),
rewardType: z.string().optional(), // TODO: Should be "Tier" but can't because of backwards compatibility
rewardTierLevel: z.string().optional(),
redeemLocation: z.string().optional(),
status: z.string().optional(),
})
const BenefitReward = BaseReward.merge(
z.object({
rewardType: z.string().optional(), // TODO: Should be "Tier" but can't because of backwards compatibility
rewardTierLevel: z.string().optional(),
})
)
const CouponData = z.object({
couponCode: z.string().optional(),
unwrapped: z.boolean().default(false),
@@ -199,19 +203,16 @@ const CouponData = z.object({
expiresAt: z.string().datetime({ offset: true }).optional(),
})
const CouponReward = z.object({
title: z.string().optional(),
id: z.string().optional(),
rewardId: z.string().optional(),
rewardType: z.enum(["Surprise", "Campaign", "Member-voucher"]),
redeemLocation: z.string().optional(),
operaRewardId: z.string().default(""),
status: z.string().optional(),
coupon: z
.array(CouponData)
.optional()
.transform((val) => val || []),
})
const CouponReward = BaseReward.merge(
z.object({
rewardType: z.enum(["Surprise", "Campaign", "Member-voucher"]),
operaRewardId: z.string().default(""),
coupon: z
.array(CouponData)
.optional()
.transform((val) => val || []),
})
)
/**
* Schema for the new /profile/v1/Reward endpoint.