refactor(LOY-62): revert to switch case for ScriptedRewardText label text

This commit is contained in:
Chuma McPhoy
2025-01-13 16:38:56 +01:00
parent da31539610
commit 655103a0b5
4 changed files with 27 additions and 20 deletions

View File

@@ -4,10 +4,9 @@ import { TIER_TO_FRIEND_MAP } from "@/constants/membershipLevels"
import BiroScript from "@/components/TempDesignSystem/Text/BiroScript"
import { isMembershipLevel } from "@/utils/membershipLevels"
import { isCouponRewardType } from "@/utils/rewards"
import { getRewardType } from "@/utils/rewards"
import type { ScriptedRewardTextProps } from "@/types/components/myPages/myPage/accountPage"
import type { CouponRewardType } from "@/types/components/myPages/rewards"
export default function ScriptedRewardText({
rewardType,
@@ -15,18 +14,26 @@ export default function ScriptedRewardText({
}: ScriptedRewardTextProps) {
const intl = useIntl()
const couponLabelMap: Record<CouponRewardType, string> = {
Campaign: intl.formatMessage({ id: "Campaign" }),
Surprise: intl.formatMessage({ id: "Surprise!" }),
"Member-voucher": intl.formatMessage({ id: "Voucher" }),
function getLabel(rewardType?: string, rewardTierLevel?: string) {
const type = getRewardType(rewardType)
switch (type) {
case "Tier":
return rewardTierLevel && isMembershipLevel(rewardTierLevel)
? TIER_TO_FRIEND_MAP[rewardTierLevel]
: null
case "Campaign":
return intl.formatMessage({ id: "Campaign" })
case "Surprise":
return intl.formatMessage({ id: "Surprise!" })
case "Member-voucher":
return intl.formatMessage({ id: "Voucher" })
default:
return null
}
}
const label =
rewardTierLevel && isMembershipLevel(rewardTierLevel)
? TIER_TO_FRIEND_MAP[rewardTierLevel]
: isCouponRewardType(rewardType)
? couponLabelMap[rewardType]
: null
const label = getLabel(rewardType, rewardTierLevel)
if (!label) return null

View File

@@ -43,3 +43,5 @@ export const COUPON_REWARD_TYPES = [
"Campaign",
"Member-voucher",
] as const
export const REWARD_TYPES = [...COUPON_REWARD_TYPES, "Tier"] as const

View File

@@ -1,8 +1,8 @@
import type { IconProps } from "@/types/components/icon"
import type {
COUPON_REWARD_TYPES,
RESTAURANT_REWARD_IDS,
REWARD_IDS,
REWARD_TYPES,
} from "@/constants/rewards"
export interface RewardIconProps extends IconProps {
@@ -14,4 +14,4 @@ export type RewardId = (typeof REWARD_IDS)[keyof typeof REWARD_IDS]
export type RestaurantRewardId = (typeof RESTAURANT_REWARD_IDS)[number]
export type CouponRewardType = (typeof COUPON_REWARD_TYPES)[number]
export type RewardType = (typeof REWARD_TYPES)[number]

View File

@@ -1,13 +1,13 @@
import {
COUPON_REWARD_TYPES,
RESTAURANT_REWARD_IDS,
REWARD_IDS,
REWARD_TYPES,
} from "@/constants/rewards"
import type {
CouponRewardType,
RestaurantRewardId,
RewardId,
RewardType,
} from "@/types/components/myPages/rewards"
import type { RewardWithRedeem } from "@/server/routers/contentstack/reward/output"
@@ -46,8 +46,6 @@ export function isRestaurantOnSiteTierReward(
return isOnSiteTierReward(reward) && isRestaurantReward(reward.reward_id)
}
export function isCouponRewardType(
type: RewardWithRedeem["rewardType"]
): type is CouponRewardType {
return COUPON_REWARD_TYPES.some((t) => t === type)
export function getRewardType(type?: string): RewardType | null {
return REWARD_TYPES.find((t) => t === type) ?? null
}