import type { ProfileMembership, ProfileRechargeProduct, } from '../../../packages/shared/src/contracts/runtime'; export { formatRechargePrice } from '../../../packages/shared/src/utils/format'; function formatMembershipPeriodPrefix(periodDays: number) { if (periodDays === 30) { return '每月'; } if (periodDays === 7) { return '每周'; } if (periodDays > 0) { return `每${periodDays}天`; } return '每周期'; } export function buildRechargeProductValueLabel(product: ProfileRechargeProduct) { if (product.kind === 'membership') { const membershipPeriodPoints = product.membershipPeriodPoints; const membershipPeriodDays = product.membershipPeriodDays > 0 ? product.membershipPeriodDays : product.durationDays; return membershipPeriodPoints > 0 ? `${formatMembershipPeriodPrefix(membershipPeriodDays)}${membershipPeriodPoints}泥点` : `${product.durationDays}天`; } return `${product.pointsAmount}${ product.bonusPoints > 0 ? `+${product.bonusPoints}` : '' }泥点`; } export function getMembershipTierLabel(tier: ProfileMembership['tier']) { switch (tier) { case 'starter': return 'Starter'; case 'basic': return 'Basic'; case 'pro': return 'Pro'; case 'ultimate': return 'Ultimate'; case 'month': return '月卡'; case 'season': return '季卡'; case 'year': return '年卡'; default: return '普通用户'; } } export function buildMembershipLabel( membership: ProfileMembership | null | undefined, formatTime: (value: string) => string, ) { if (membership?.status !== 'active') { return '普通用户'; } const tierLabel = membership.tier === 'normal' ? '会员' : getMembershipTierLabel(membership.tier); const resetLabel = membership.cycleResetsAt ? ` · ${formatTime(membership.cycleResetsAt)}重置` : ''; if (membership.tier === 'normal') { return membership.expiresAt ? `会员至 ${formatTime(membership.expiresAt)}${resetLabel}` : `会员已生效${resetLabel}`; } return membership.expiresAt ? `${tierLabel} 至 ${formatTime(membership.expiresAt)}${resetLabel}` : `${tierLabel} 已生效${resetLabel}`; } export function buildMembershipCycleLabel( membership: ProfileMembership | null | undefined, formatTime: (value: string) => string, ) { if (membership?.status !== 'active') { return '普通用户'; } if (membership.cycleRemainingPoints > 0) { const resetLabel = membership.cycleResetsAt ? ` · ${formatTime(membership.cycleResetsAt)}重置` : ''; return `本周期剩余 ${membership.cycleRemainingPoints} 泥点${resetLabel}`; } return buildMembershipLabel(membership, formatTime); }