From 63a5e4f328f74bc003c311d33fcd56ed0dbaf16f Mon Sep 17 00:00:00 2001 From: javayhu Date: Fri, 22 Aug 2025 00:04:40 +0800 Subject: [PATCH] refactor: remove subscription and lifetime credits logic from credit stats and balance card --- messages/en.json | 3 +- messages/zh.json | 3 +- src/actions/get-credit-stats.ts | 40 ------------ .../settings/credits/credits-balance-card.tsx | 61 +++++-------------- 4 files changed, 18 insertions(+), 89 deletions(-) diff --git a/messages/en.json b/messages/en.json index 84fde26..53d5c26 100644 --- a/messages/en.json +++ b/messages/en.json @@ -601,8 +601,7 @@ "creditsAdded": "Credits have been added to your account", "viewTransactions": "View Credit Transactions", "retry": "Retry", - "subscriptionCredits": "{credits} credits from subscription this month", - "lifetimeCredits": "{credits} credits from lifetime plan this month", + "expiringCredits": "{credits} credits expiring on {date}" }, "packages": { diff --git a/messages/zh.json b/messages/zh.json index 9120f0f..ab1ab7f 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -601,8 +601,7 @@ "creditsAdded": "积分已添加到您的账户", "viewTransactions": "查看积分记录", "retry": "重试", - "subscriptionCredits": "本月订阅获得 {credits} 积分", - "lifetimeCredits": "本月终身会员获得 {credits} 积分", + "expiringCredits": "{credits} 积分将在 {date} 过期" }, "packages": { diff --git a/src/actions/get-credit-stats.ts b/src/actions/get-credit-stats.ts index 7e5c634..1bb4c02 100644 --- a/src/actions/get-credit-stats.ts +++ b/src/actions/get-credit-stats.ts @@ -1,6 +1,5 @@ 'use server'; -import { CREDIT_TRANSACTION_TYPE } from '@/credits/types'; import { getDb } from '@/db'; import { creditTransaction } from '@/db/schema'; import type { User } from '@/lib/auth-types'; @@ -9,7 +8,6 @@ import { addDays } from 'date-fns'; import { and, eq, gte, isNotNull, lte, sql, sum } from 'drizzle-orm'; const CREDITS_EXPIRATION_DAYS = 31; -const CREDITS_MONTHLY_DAYS = 31; /** * Get credit statistics for a user @@ -39,38 +37,6 @@ export const getCreditStatsAction = userActionClient.action(async ({ ctx }) => { ) ); - // Get credits from subscription renewals (recent CREDITS_MONTHLY_DAYS days) - const monthlyRefreshDaysAgo = addDays(new Date(), -CREDITS_MONTHLY_DAYS); - const subscriptionCredits = await db - .select({ - amount: sum(creditTransaction.amount), - }) - .from(creditTransaction) - .where( - and( - eq(creditTransaction.userId, userId), - eq( - creditTransaction.type, - CREDIT_TRANSACTION_TYPE.SUBSCRIPTION_RENEWAL - ), - gte(creditTransaction.createdAt, monthlyRefreshDaysAgo) - ) - ); - - // Get credits from monthly lifetime distribution (recent CREDITS_MONTHLY_DAYS days) - const lifetimeCredits = await db - .select({ - amount: sum(creditTransaction.amount), - }) - .from(creditTransaction) - .where( - and( - eq(creditTransaction.userId, userId), - eq(creditTransaction.type, CREDIT_TRANSACTION_TYPE.LIFETIME_MONTHLY), - gte(creditTransaction.createdAt, monthlyRefreshDaysAgo) - ) - ); - return { success: true, data: { @@ -78,12 +44,6 @@ export const getCreditStatsAction = userActionClient.action(async ({ ctx }) => { amount: Number(expiringCredits[0]?.amount) || 0, earliestExpiration: expiringCredits[0]?.earliestExpiration || null, }, - subscriptionCredits: { - amount: Number(subscriptionCredits[0]?.amount) || 0, - }, - lifetimeCredits: { - amount: Number(lifetimeCredits[0]?.amount) || 0, - }, }, }; } catch (error) { diff --git a/src/components/settings/credits/credits-balance-card.tsx b/src/components/settings/credits/credits-balance-card.tsx index 82feb49..d05796f 100644 --- a/src/components/settings/credits/credits-balance-card.tsx +++ b/src/components/settings/credits/credits-balance-card.tsx @@ -13,9 +13,7 @@ import { Skeleton } from '@/components/ui/skeleton'; import { websiteConfig } from '@/config/website'; import { useCreditBalance, useCreditStats } from '@/hooks/use-credits'; import { useMounted } from '@/hooks/use-mounted'; -import { useCurrentPlan } from '@/hooks/use-payment'; import { useLocaleRouter } from '@/i18n/navigation'; -import { authClient } from '@/lib/auth-client'; import { formatDate } from '@/lib/formatter'; import { cn } from '@/lib/utils'; import { Routes } from '@/routes'; @@ -48,11 +46,6 @@ export default function CreditsBalanceCard() { refetch: refetchBalance, } = useCreditBalance(); - // Get payment info to check plan type - const { data: session } = authClient.useSession(); - const { data: paymentData } = useCurrentPlan(session?.user?.id); - const currentPlan = paymentData?.currentPlan; - // TanStack Query hook for credit statistics const { data: creditStats, @@ -167,44 +160,22 @@ export default function CreditsBalanceCard() { {/* Balance information */}
- {/* Plan-based credits info */} - {!isLoadingStats && creditStats && ( - <> - {/* Subscription credits (for paid plans) */} - {!currentPlan?.isFree && - (creditStats.subscriptionCredits.amount > 0 || - creditStats.lifetimeCredits.amount > 0) && ( -
- - {currentPlan?.isLifetime - ? t('lifetimeCredits', { - credits: creditStats.lifetimeCredits.amount, - }) - : t('subscriptionCredits', { - credits: creditStats.subscriptionCredits.amount, - })} - -
- )} - - {/* Expiring credits warning */} - {creditStats.expiringCredits.amount > 0 && - creditStats.expiringCredits.earliestExpiration && ( -
- - {t('expiringCredits', { - credits: creditStats.expiringCredits.amount, - date: formatDate( - new Date( - creditStats.expiringCredits.earliestExpiration - ) - ), - })} - -
- )} - - )} + {/* Expiring credits warning */} + {!isLoadingStats && + creditStats && + creditStats.expiringCredits.amount > 0 && + creditStats.expiringCredits.earliestExpiration && ( +
+ + {t('expiringCredits', { + credits: creditStats.expiringCredits.amount, + date: formatDate( + new Date(creditStats.expiringCredits.earliestExpiration) + ), + })} + +
+ )}