30 lines
1.7 KiB
JavaScript
30 lines
1.7 KiB
JavaScript
// Server-side contribution config
|
|
export const CONTRIBUTION_TIERS = {
|
|
FREE: { value: "0", amount: 0, label: "$0 - I need support right now", tier: "free" },
|
|
SUPPORTER: { value: "5", amount: 5, label: "$5 - I can contribute", tier: "supporter" },
|
|
MEMBER: { value: "15", amount: 15, label: "$15 - I can sustain the community", tier: "member" },
|
|
ADVOCATE: { value: "30", amount: 30, label: "$30 - I can support others too", tier: "advocate" },
|
|
CHAMPION: { value: "50", amount: 50, label: "$50 - I want to sponsor multiple members", tier: "champion" },
|
|
}
|
|
|
|
export const getContributionOptions = () => Object.values(CONTRIBUTION_TIERS)
|
|
export const getValidContributionValues = () => Object.values(CONTRIBUTION_TIERS).map(t => t.value)
|
|
export const getContributionTierByValue = (value) =>
|
|
Object.values(CONTRIBUTION_TIERS).find(t => t.value === value)
|
|
export const requiresPayment = (value) => (getContributionTierByValue(value)?.amount ?? 0) > 0
|
|
export const isValidContributionValue = (value) => getValidContributionValues().includes(value)
|
|
export const getPaidContributionTiers = () =>
|
|
Object.values(CONTRIBUTION_TIERS).filter(t => t.amount > 0)
|
|
|
|
export function getTierAmount(tier, cadence = 'monthly') {
|
|
const base = parseFloat(tier.amount)
|
|
return cadence === 'annual' ? base * 10 : base
|
|
}
|
|
|
|
// Cadence-keyed plan-id lookup. Throws via createError at call site if env missing;
|
|
// this helper just returns the raw runtime-config value.
|
|
export function getHelcimPlanId(cadence) {
|
|
const config = useRuntimeConfig()
|
|
if (cadence === 'annual') return config.helcimAnnualPlanId || null
|
|
return config.helcimMonthlyPlanId || null
|
|
}
|