refactor: rename resetState to resetCreditsState and remove unused updateBalanceOptimistically method

This commit is contained in:
javayhu 2025-07-13 00:36:02 +08:00
parent 4313e32471
commit 7af313868c
6 changed files with 11 additions and 28 deletions

View File

@ -18,7 +18,6 @@ import { LogOutIcon } from 'lucide-react';
import { useTranslations } from 'next-intl';
import { useState } from 'react';
import { toast } from 'sonner';
import { CreditsBalanceButton } from './credits-balance-button';
import { CreditsBalanceMenu } from './credits-balance-menu';
interface UserButtonProps {

View File

@ -23,17 +23,17 @@ import { CreditCheckoutButton } from './credit-checkout-button';
* @returns Credit packages component
*/
export function CreditPackages() {
// If credits are not enabled, return null
if (!websiteConfig.credits.enableCredits) {
return null;
}
const t = useTranslations('Dashboard.settings.credits.packages');
// Get current user and payment info
const currentUser = useCurrentUser();
const { currentPlan } = usePayment();
// Don't render if credits are disabled
if (!websiteConfig.credits.enableCredits) {
return null;
}
// Check if user is on free plan and enableForFreePlan is false
const isFreePlan = currentPlan?.isFree === true;
if (isFreePlan && !websiteConfig.credits.enableForFreePlan) {

View File

@ -16,7 +16,6 @@ export function useCredits() {
fetchCredits,
consumeCredits,
refreshCredits,
updateBalanceOptimistically,
} = useCreditsStore();
const { data: session } = authClient.useSession();
@ -56,7 +55,6 @@ export function useCredits() {
// Methods
consumeCredits,
updateBalanceOptimistically,
// Utility methods
refetch,

View File

@ -55,7 +55,7 @@ export interface Price {
*/
export interface Credits {
enable: boolean; // Whether to enable credits for this plan
amount: number; // Number of credits provided
amount: number; // Number of credits provided per month
expireDays?: number; // Number of days until credits expire, undefined means no expiration
}

View File

@ -12,7 +12,7 @@ import { useEffect } from 'react';
*/
export function CreditsProvider({ children }: { children: React.ReactNode }) {
const user = useCurrentUser();
const { fetchCredits, resetState } = useCreditsStore();
const { fetchCredits, resetCreditsState } = useCreditsStore();
useEffect(() => {
if (user) {
@ -20,9 +20,9 @@ export function CreditsProvider({ children }: { children: React.ReactNode }) {
fetchCredits(user);
} else {
// User is logged out, reset the credits state
resetState();
resetCreditsState();
}
}, [user, fetchCredits, resetState]);
}, [user, fetchCredits, resetCreditsState]);
return <>{children}</>;
}

View File

@ -20,9 +20,7 @@ export interface CreditsState {
fetchCredits: (user: Session['user'] | null | undefined) => Promise<void>;
consumeCredits: (amount: number, description: string) => Promise<boolean>;
refreshCredits: (user: Session['user'] | null | undefined) => Promise<void>;
resetState: () => void;
// For optimistic updates
updateBalanceOptimistically: (amount: number) => void;
resetCreditsState: () => void;
}
// Cache duration: 30 seconds
@ -192,22 +190,10 @@ export const useCreditsStore = create<CreditsState>((set, get) => ({
}
},
/**
* Update balance optimistically (for external credit additions)
* @param amount Amount to add to current balance
*/
updateBalanceOptimistically: (amount: number) => {
const { balance } = get();
set({
balance: balance + amount,
lastFetchTime: null, // Clear cache to fetch fresh data next time
});
},
/**
* Reset credits state
*/
resetState: () => {
resetCreditsState: () => {
set({
balance: 0,
isLoading: false,