refactor(LOY-62): revert to switch case for ScriptedRewardText label text
This commit is contained in:
@@ -4,10 +4,9 @@ import { TIER_TO_FRIEND_MAP } from "@/constants/membershipLevels"
|
|||||||
|
|
||||||
import BiroScript from "@/components/TempDesignSystem/Text/BiroScript"
|
import BiroScript from "@/components/TempDesignSystem/Text/BiroScript"
|
||||||
import { isMembershipLevel } from "@/utils/membershipLevels"
|
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 { ScriptedRewardTextProps } from "@/types/components/myPages/myPage/accountPage"
|
||||||
import type { CouponRewardType } from "@/types/components/myPages/rewards"
|
|
||||||
|
|
||||||
export default function ScriptedRewardText({
|
export default function ScriptedRewardText({
|
||||||
rewardType,
|
rewardType,
|
||||||
@@ -15,18 +14,26 @@ export default function ScriptedRewardText({
|
|||||||
}: ScriptedRewardTextProps) {
|
}: ScriptedRewardTextProps) {
|
||||||
const intl = useIntl()
|
const intl = useIntl()
|
||||||
|
|
||||||
const couponLabelMap: Record<CouponRewardType, string> = {
|
function getLabel(rewardType?: string, rewardTierLevel?: string) {
|
||||||
Campaign: intl.formatMessage({ id: "Campaign" }),
|
const type = getRewardType(rewardType)
|
||||||
Surprise: intl.formatMessage({ id: "Surprise!" }),
|
|
||||||
"Member-voucher": intl.formatMessage({ id: "Voucher" }),
|
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 =
|
const label = getLabel(rewardType, rewardTierLevel)
|
||||||
rewardTierLevel && isMembershipLevel(rewardTierLevel)
|
|
||||||
? TIER_TO_FRIEND_MAP[rewardTierLevel]
|
|
||||||
: isCouponRewardType(rewardType)
|
|
||||||
? couponLabelMap[rewardType]
|
|
||||||
: null
|
|
||||||
|
|
||||||
if (!label) return null
|
if (!label) return null
|
||||||
|
|
||||||
|
|||||||
@@ -43,3 +43,5 @@ export const COUPON_REWARD_TYPES = [
|
|||||||
"Campaign",
|
"Campaign",
|
||||||
"Member-voucher",
|
"Member-voucher",
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
|
export const REWARD_TYPES = [...COUPON_REWARD_TYPES, "Tier"] as const
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { IconProps } from "@/types/components/icon"
|
import type { IconProps } from "@/types/components/icon"
|
||||||
import type {
|
import type {
|
||||||
COUPON_REWARD_TYPES,
|
|
||||||
RESTAURANT_REWARD_IDS,
|
RESTAURANT_REWARD_IDS,
|
||||||
REWARD_IDS,
|
REWARD_IDS,
|
||||||
|
REWARD_TYPES,
|
||||||
} from "@/constants/rewards"
|
} from "@/constants/rewards"
|
||||||
|
|
||||||
export interface RewardIconProps extends IconProps {
|
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 RestaurantRewardId = (typeof RESTAURANT_REWARD_IDS)[number]
|
||||||
|
|
||||||
export type CouponRewardType = (typeof COUPON_REWARD_TYPES)[number]
|
export type RewardType = (typeof REWARD_TYPES)[number]
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import {
|
import {
|
||||||
COUPON_REWARD_TYPES,
|
|
||||||
RESTAURANT_REWARD_IDS,
|
RESTAURANT_REWARD_IDS,
|
||||||
REWARD_IDS,
|
REWARD_IDS,
|
||||||
|
REWARD_TYPES,
|
||||||
} from "@/constants/rewards"
|
} from "@/constants/rewards"
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
CouponRewardType,
|
|
||||||
RestaurantRewardId,
|
RestaurantRewardId,
|
||||||
RewardId,
|
RewardId,
|
||||||
|
RewardType,
|
||||||
} from "@/types/components/myPages/rewards"
|
} from "@/types/components/myPages/rewards"
|
||||||
import type { RewardWithRedeem } from "@/server/routers/contentstack/reward/output"
|
import type { RewardWithRedeem } from "@/server/routers/contentstack/reward/output"
|
||||||
|
|
||||||
@@ -46,8 +46,6 @@ export function isRestaurantOnSiteTierReward(
|
|||||||
return isOnSiteTierReward(reward) && isRestaurantReward(reward.reward_id)
|
return isOnSiteTierReward(reward) && isRestaurantReward(reward.reward_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isCouponRewardType(
|
export function getRewardType(type?: string): RewardType | null {
|
||||||
type: RewardWithRedeem["rewardType"]
|
return REWARD_TYPES.find((t) => t === type) ?? null
|
||||||
): type is CouponRewardType {
|
|
||||||
return COUPON_REWARD_TYPES.some((t) => t === type)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user