diff --git a/src/components/layout/user-button.tsx b/src/components/layout/user-button.tsx index b3d04a2..d48bc0c 100644 --- a/src/components/layout/user-button.tsx +++ b/src/components/layout/user-button.tsx @@ -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 { diff --git a/src/components/settings/credits/credit-packages.tsx b/src/components/settings/credits/credit-packages.tsx index 3c539be..6d983b8 100644 --- a/src/components/settings/credits/credit-packages.tsx +++ b/src/components/settings/credits/credit-packages.tsx @@ -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) { diff --git a/src/hooks/use-credits.ts b/src/hooks/use-credits.ts index dfb6373..933d1a6 100644 --- a/src/hooks/use-credits.ts +++ b/src/hooks/use-credits.ts @@ -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, diff --git a/src/payment/types.ts b/src/payment/types.ts index e07f87c..ae087fe 100644 --- a/src/payment/types.ts +++ b/src/payment/types.ts @@ -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 } diff --git a/src/providers/credits-provider.tsx b/src/providers/credits-provider.tsx index 3ac8ca5..4f8232a 100644 --- a/src/providers/credits-provider.tsx +++ b/src/providers/credits-provider.tsx @@ -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}; } diff --git a/src/stores/credits-store.ts b/src/stores/credits-store.ts index 8421c1e..2723b5f 100644 --- a/src/stores/credits-store.ts +++ b/src/stores/credits-store.ts @@ -20,9 +20,7 @@ export interface CreditsState { fetchCredits: (user: Session['user'] | null | undefined) => Promise; consumeCredits: (amount: number, description: string) => Promise; refreshCredits: (user: Session['user'] | null | undefined) => Promise; - resetState: () => void; - // For optimistic updates - updateBalanceOptimistically: (amount: number) => void; + resetCreditsState: () => void; } // Cache duration: 30 seconds @@ -192,22 +190,10 @@ export const useCreditsStore = create((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,