39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { useIntl } from "react-intl"
|
|
|
|
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 type { ScriptedRewardTextProps } from "@/types/components/myPages/myPage/accountPage"
|
|
import type { CouponRewardType } from "@/types/components/myPages/rewards"
|
|
|
|
export default function ScriptedRewardText({
|
|
rewardType,
|
|
rewardTierLevel,
|
|
}: 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" }),
|
|
}
|
|
|
|
const label =
|
|
rewardTierLevel && isMembershipLevel(rewardTierLevel)
|
|
? TIER_TO_FRIEND_MAP[rewardTierLevel]
|
|
: isCouponRewardType(rewardType)
|
|
? couponLabelMap[rewardType]
|
|
: null
|
|
|
|
if (!label) return null
|
|
|
|
return (
|
|
<BiroScript type="two" color="red" tilted="small">
|
|
{label}
|
|
</BiroScript>
|
|
)
|
|
}
|