52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import {
|
|
RESTAURANT_REWARD_IDS,
|
|
REWARD_IDS,
|
|
REWARD_TYPES,
|
|
} from "@/constants/rewards"
|
|
|
|
import type {
|
|
RestaurantRewardId,
|
|
RewardId,
|
|
RewardType,
|
|
} from "@/types/components/myPages/rewards"
|
|
import type { RewardWithRedeem } from "@/server/routers/contentstack/reward/output"
|
|
|
|
export function isValidRewardId(id: string): id is RewardId {
|
|
return Object.values<string>(REWARD_IDS).includes(id)
|
|
}
|
|
|
|
export function isRestaurantReward(
|
|
rewardId: string
|
|
): rewardId is RestaurantRewardId {
|
|
return RESTAURANT_REWARD_IDS.some((id) => id === rewardId)
|
|
}
|
|
|
|
export function redeemLocationIsOnSite(
|
|
location: RewardWithRedeem["redeemLocation"]
|
|
): location is "On-site" {
|
|
return location === "On-site"
|
|
}
|
|
|
|
export function isTierType(
|
|
type: RewardWithRedeem["rewardType"]
|
|
): type is "Tier" {
|
|
return type === "Tier"
|
|
}
|
|
|
|
export function isOnSiteTierReward(reward: RewardWithRedeem): boolean {
|
|
return (
|
|
redeemLocationIsOnSite(reward.redeemLocation) &&
|
|
isTierType(reward.rewardType)
|
|
)
|
|
}
|
|
|
|
export function isRestaurantOnSiteTierReward(
|
|
reward: RewardWithRedeem
|
|
): boolean {
|
|
return isOnSiteTierReward(reward) && isRestaurantReward(reward.reward_id)
|
|
}
|
|
|
|
export function getRewardType(type?: string): RewardType | null {
|
|
return REWARD_TYPES.find((t) => t === type) ?? null
|
|
}
|