chore: remove unused filter modal

remove old cms model

refactor reward types
This commit is contained in:
Christian Andolf
2025-03-18 09:19:05 +01:00
parent 45d57a9c89
commit f272dde1ef
23 changed files with 345 additions and 891 deletions
@@ -1,79 +0,0 @@
import { useMemo } from "react"
import { isMembershipLevel } from "@/utils/membershipLevels"
import { isRewardCategory } from "@/utils/rewards"
import type { RewardCategory } from "@/types/components/myPages/rewards"
import type { MembershipLevelEnum } from "@/constants/membershipLevels"
import type {
Reward,
RewardWithRedeem,
} from "@/server/routers/contentstack/reward/output"
export function useFilteredRewards(
rewards: (Reward | RewardWithRedeem)[],
selectedCategories: RewardCategory[] = [],
selectedLevels: MembershipLevelEnum[] = []
) {
const availableCategories = Array.from(
new Set(
rewards
.flatMap((reward) => reward.categories || [])
.filter((category) => isRewardCategory(category))
)
).sort()
const availableTierLevels = Array.from(
new Set(
rewards
.map((reward) => reward.rewardTierLevel)
.filter(
(level): level is MembershipLevelEnum =>
typeof level === "string" && isMembershipLevel(level)
)
)
)
const hasFilterableOptions =
availableCategories.length > 0 || availableTierLevels.length > 0
const filteredRewards = useMemo(() => {
const hasSelectedCategoryFilter = selectedCategories.length > 0
const hasSelectedLevelFilter = selectedLevels.length > 0
if (!hasSelectedCategoryFilter && !hasSelectedLevelFilter) {
return rewards
}
const useOrLogic = hasSelectedCategoryFilter && hasSelectedLevelFilter
return rewards.filter((reward) => {
const matchesCategory =
!hasSelectedCategoryFilter ||
(reward.categories?.some(
(category) =>
isRewardCategory(category) && selectedCategories.includes(category)
) ??
false)
const matchesLevel =
!hasSelectedLevelFilter ||
(reward.rewardTierLevel &&
isMembershipLevel(reward.rewardTierLevel) &&
selectedLevels.includes(reward.rewardTierLevel))
// Apply OR logic if both filters are active, otherwise AND
return useOrLogic
? matchesCategory || matchesLevel
: matchesCategory && matchesLevel
})
}, [rewards, selectedCategories, selectedLevels])
return {
filteredRewards,
total: filteredRewards.length,
availableTierLevels,
availableCategories,
hasFilterableOptions,
}
}