refactor: rename resetState to resetCreditsState and remove unused updateBalanceOptimistically method
This commit is contained in:
parent
4313e32471
commit
7af313868c
@ -18,7 +18,6 @@ import { LogOutIcon } from 'lucide-react';
|
|||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { CreditsBalanceButton } from './credits-balance-button';
|
|
||||||
import { CreditsBalanceMenu } from './credits-balance-menu';
|
import { CreditsBalanceMenu } from './credits-balance-menu';
|
||||||
|
|
||||||
interface UserButtonProps {
|
interface UserButtonProps {
|
||||||
|
@ -23,17 +23,17 @@ import { CreditCheckoutButton } from './credit-checkout-button';
|
|||||||
* @returns Credit packages component
|
* @returns Credit packages component
|
||||||
*/
|
*/
|
||||||
export function CreditPackages() {
|
export function CreditPackages() {
|
||||||
|
// If credits are not enabled, return null
|
||||||
|
if (!websiteConfig.credits.enableCredits) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
const t = useTranslations('Dashboard.settings.credits.packages');
|
const t = useTranslations('Dashboard.settings.credits.packages');
|
||||||
|
|
||||||
// Get current user and payment info
|
// Get current user and payment info
|
||||||
const currentUser = useCurrentUser();
|
const currentUser = useCurrentUser();
|
||||||
const { currentPlan } = usePayment();
|
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
|
// Check if user is on free plan and enableForFreePlan is false
|
||||||
const isFreePlan = currentPlan?.isFree === true;
|
const isFreePlan = currentPlan?.isFree === true;
|
||||||
if (isFreePlan && !websiteConfig.credits.enableForFreePlan) {
|
if (isFreePlan && !websiteConfig.credits.enableForFreePlan) {
|
||||||
|
@ -16,7 +16,6 @@ export function useCredits() {
|
|||||||
fetchCredits,
|
fetchCredits,
|
||||||
consumeCredits,
|
consumeCredits,
|
||||||
refreshCredits,
|
refreshCredits,
|
||||||
updateBalanceOptimistically,
|
|
||||||
} = useCreditsStore();
|
} = useCreditsStore();
|
||||||
|
|
||||||
const { data: session } = authClient.useSession();
|
const { data: session } = authClient.useSession();
|
||||||
@ -56,7 +55,6 @@ export function useCredits() {
|
|||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
consumeCredits,
|
consumeCredits,
|
||||||
updateBalanceOptimistically,
|
|
||||||
|
|
||||||
// Utility methods
|
// Utility methods
|
||||||
refetch,
|
refetch,
|
||||||
|
@ -55,7 +55,7 @@ export interface Price {
|
|||||||
*/
|
*/
|
||||||
export interface Credits {
|
export interface Credits {
|
||||||
enable: boolean; // Whether to enable credits for this plan
|
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
|
expireDays?: number; // Number of days until credits expire, undefined means no expiration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import { useEffect } from 'react';
|
|||||||
*/
|
*/
|
||||||
export function CreditsProvider({ children }: { children: React.ReactNode }) {
|
export function CreditsProvider({ children }: { children: React.ReactNode }) {
|
||||||
const user = useCurrentUser();
|
const user = useCurrentUser();
|
||||||
const { fetchCredits, resetState } = useCreditsStore();
|
const { fetchCredits, resetCreditsState } = useCreditsStore();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
@ -20,9 +20,9 @@ export function CreditsProvider({ children }: { children: React.ReactNode }) {
|
|||||||
fetchCredits(user);
|
fetchCredits(user);
|
||||||
} else {
|
} else {
|
||||||
// User is logged out, reset the credits state
|
// User is logged out, reset the credits state
|
||||||
resetState();
|
resetCreditsState();
|
||||||
}
|
}
|
||||||
}, [user, fetchCredits, resetState]);
|
}, [user, fetchCredits, resetCreditsState]);
|
||||||
|
|
||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,7 @@ export interface CreditsState {
|
|||||||
fetchCredits: (user: Session['user'] | null | undefined) => Promise<void>;
|
fetchCredits: (user: Session['user'] | null | undefined) => Promise<void>;
|
||||||
consumeCredits: (amount: number, description: string) => Promise<boolean>;
|
consumeCredits: (amount: number, description: string) => Promise<boolean>;
|
||||||
refreshCredits: (user: Session['user'] | null | undefined) => Promise<void>;
|
refreshCredits: (user: Session['user'] | null | undefined) => Promise<void>;
|
||||||
resetState: () => void;
|
resetCreditsState: () => void;
|
||||||
// For optimistic updates
|
|
||||||
updateBalanceOptimistically: (amount: number) => void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache duration: 30 seconds
|
// 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
|
* Reset credits state
|
||||||
*/
|
*/
|
||||||
resetState: () => {
|
resetCreditsState: () => {
|
||||||
set({
|
set({
|
||||||
balance: 0,
|
balance: 0,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
Loading…
Reference in New Issue
Block a user