refactor: rename PURCHASE to PURCHASE_PACKAGE in transaction types

This commit is contained in:
javayhu 2025-07-10 22:52:26 +08:00
parent de1ccca27b
commit 59c7c807db
4 changed files with 25 additions and 34 deletions

View File

@ -46,15 +46,17 @@ import {
} from '@tanstack/react-table'; } from '@tanstack/react-table';
import { import {
ArrowUpDownIcon, ArrowUpDownIcon,
BanknoteIcon,
ChevronDownIcon, ChevronDownIcon,
ChevronLeftIcon, ChevronLeftIcon,
ChevronRightIcon, ChevronRightIcon,
ChevronsLeftIcon, ChevronsLeftIcon,
ChevronsRightIcon, ChevronsRightIcon,
ClockIcon, ClockIcon,
CoinsIcon,
GemIcon,
GiftIcon, GiftIcon,
MinusCircleIcon, HandCoinsIcon,
RefreshCwIcon,
ShoppingCartIcon, ShoppingCartIcon,
} from 'lucide-react'; } from 'lucide-react';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
@ -156,19 +158,19 @@ export function CreditTransactionsTable({
const getTransactionTypeIcon = (type: string) => { const getTransactionTypeIcon = (type: string) => {
switch (type) { switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH: case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
return <RefreshCwIcon className="h-4 w-4" />; return <HandCoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT: case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return <GiftIcon className="h-4 w-4" />; return <GiftIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.PURCHASE: case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return <ShoppingCartIcon className="h-4 w-4" />; return <ShoppingCartIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
return <MinusCircleIcon className="h-4 w-4" />; return <CoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.EXPIRE: case CREDIT_TRANSACTION_TYPE.EXPIRE:
return <ClockIcon className="h-4 w-4" />; return <ClockIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL: case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
return <RefreshCwIcon className="h-4 w-4" />; return <BanknoteIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY: case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return <GiftIcon className="h-4 w-4" />; return <GemIcon className="h-5 w-5" />;
default: default:
return null; return null;
} }
@ -177,12 +179,6 @@ export function CreditTransactionsTable({
// Get transaction type badge variant // Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => { const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) { switch (type) {
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE: case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const; return 'destructive' as const;
@ -198,7 +194,7 @@ export function CreditTransactionsTable({
return t('types.MONTHLY_REFRESH'); return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT: case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT'); return t('types.REGISTER_GIFT');
case CREDIT_TRANSACTION_TYPE.PURCHASE: case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE'); return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE'); return t('types.USAGE');

View File

@ -4,7 +4,6 @@ import {
Drawer, Drawer,
DrawerClose, DrawerClose,
DrawerContent, DrawerContent,
DrawerDescription,
DrawerFooter, DrawerFooter,
DrawerHeader, DrawerHeader,
DrawerTitle, DrawerTitle,
@ -14,10 +13,12 @@ import { Separator } from '@/components/ui/separator';
import { useIsMobile } from '@/hooks/use-mobile'; import { useIsMobile } from '@/hooks/use-mobile';
import { formatDate } from '@/lib/formatter'; import { formatDate } from '@/lib/formatter';
import { import {
BanknoteIcon,
ClockIcon, ClockIcon,
CoinsIcon,
GemIcon,
GiftIcon, GiftIcon,
MinusCircleIcon, HandCoinsIcon,
RefreshCwIcon,
ShoppingCartIcon, ShoppingCartIcon,
} from 'lucide-react'; } from 'lucide-react';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
@ -51,19 +52,19 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
const getTransactionTypeIcon = (type: string) => { const getTransactionTypeIcon = (type: string) => {
switch (type) { switch (type) {
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH: case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
return <RefreshCwIcon className="h-5 w-5" />; return <HandCoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT: case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return <GiftIcon className="h-5 w-5" />; return <GiftIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.PURCHASE: case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return <ShoppingCartIcon className="h-5 w-5" />; return <ShoppingCartIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
return <MinusCircleIcon className="h-5 w-5" />; return <CoinsIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.EXPIRE: case CREDIT_TRANSACTION_TYPE.EXPIRE:
return <ClockIcon className="h-5 w-5" />; return <ClockIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL: case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
return <RefreshCwIcon className="h-5 w-5" />; return <BanknoteIcon className="h-5 w-5" />;
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY: case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return <GiftIcon className="h-5 w-5" />; return <GemIcon className="h-5 w-5" />;
default: default:
return null; return null;
} }
@ -72,12 +73,6 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
// Get transaction type badge variant // Get transaction type badge variant
const getTransactionTypeBadgeVariant = (type: string) => { const getTransactionTypeBadgeVariant = (type: string) => {
switch (type) { switch (type) {
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
case CREDIT_TRANSACTION_TYPE.PURCHASE:
case CREDIT_TRANSACTION_TYPE.MONTHLY_REFRESH:
case CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL:
case CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY:
return 'outline' as const;
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
case CREDIT_TRANSACTION_TYPE.EXPIRE: case CREDIT_TRANSACTION_TYPE.EXPIRE:
return 'destructive' as const; return 'destructive' as const;
@ -93,7 +88,7 @@ export function CreditDetailViewer({ transaction }: CreditDetailViewerProps) {
return t('types.MONTHLY_REFRESH'); return t('types.MONTHLY_REFRESH');
case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT: case CREDIT_TRANSACTION_TYPE.REGISTER_GIFT:
return t('types.REGISTER_GIFT'); return t('types.REGISTER_GIFT');
case CREDIT_TRANSACTION_TYPE.PURCHASE: case CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE:
return t('types.PURCHASE'); return t('types.PURCHASE');
case CREDIT_TRANSACTION_TYPE.USAGE: case CREDIT_TRANSACTION_TYPE.USAGE:
return t('types.USAGE'); return t('types.USAGE');

View File

@ -4,7 +4,7 @@
export enum CREDIT_TRANSACTION_TYPE { export enum CREDIT_TRANSACTION_TYPE {
MONTHLY_REFRESH = 'MONTHLY_REFRESH', // Credits earned by monthly refresh (free users) MONTHLY_REFRESH = 'MONTHLY_REFRESH', // Credits earned by monthly refresh (free users)
REGISTER_GIFT = 'REGISTER_GIFT', // Credits earned by register gift REGISTER_GIFT = 'REGISTER_GIFT', // Credits earned by register gift
PURCHASE = 'PURCHASE', // Credits earned by purchase PURCHASE_PACKAGE = 'PURCHASE_PACKAGE', // Credits earned by purchase package
SUBSCRIPTION_RENEWAL = 'SUBSCRIPTION_RENEWAL', // Credits earned by subscription renewal SUBSCRIPTION_RENEWAL = 'SUBSCRIPTION_RENEWAL', // Credits earned by subscription renewal
LIFETIME_MONTHLY = 'LIFETIME_MONTHLY', // Credits earned by lifetime plan monthly distribution LIFETIME_MONTHLY = 'LIFETIME_MONTHLY', // Credits earned by lifetime plan monthly distribution
USAGE = 'USAGE', // Credits spent by usage USAGE = 'USAGE', // Credits spent by usage

View File

@ -827,7 +827,7 @@ export class StripeProvider implements PaymentProvider {
await addCredits({ await addCredits({
userId, userId,
amount: Number.parseInt(credits), amount: Number.parseInt(credits),
type: CREDIT_TRANSACTION_TYPE.PURCHASE, type: CREDIT_TRANSACTION_TYPE.PURCHASE_PACKAGE,
description: `+${credits} credits for package ${packageId} ($${amount.toLocaleString()})`, description: `+${credits} credits for package ${packageId} ($${amount.toLocaleString()})`,
paymentId: session.id, paymentId: session.id,
expireDays: creditPackage.expireDays, expireDays: creditPackage.expireDays,