diff --git a/components/Blocks/DynamicContent/Rewards/ScriptedRewardText/index.tsx b/components/Blocks/DynamicContent/Rewards/ScriptedRewardText/index.tsx index 76608ee94..b15312a22 100644 --- a/components/Blocks/DynamicContent/Rewards/ScriptedRewardText/index.tsx +++ b/components/Blocks/DynamicContent/Rewards/ScriptedRewardText/index.tsx @@ -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 = { - 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 diff --git a/constants/rewards.ts b/constants/rewards.ts index 98c39a2e2..f8bf15f65 100644 --- a/constants/rewards.ts +++ b/constants/rewards.ts @@ -43,3 +43,5 @@ export const COUPON_REWARD_TYPES = [ "Campaign", "Member-voucher", ] as const + +export const REWARD_TYPES = [...COUPON_REWARD_TYPES, "Tier"] as const diff --git a/types/components/myPages/rewards.ts b/types/components/myPages/rewards.ts index a25b3805f..07fad56b1 100644 --- a/types/components/myPages/rewards.ts +++ b/types/components/myPages/rewards.ts @@ -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] diff --git a/utils/rewards.ts b/utils/rewards.ts index c468e54fc..8bde3f671 100644 --- a/utils/rewards.ts +++ b/utils/rewards.ts @@ -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 }