feat: add credits configuration checks in hooks and provider
This commit is contained in:
parent
3cb0911cf4
commit
0b695cc4b2
@ -1,3 +1,4 @@
|
|||||||
|
import { websiteConfig } from '@/config/website';
|
||||||
import { authClient } from '@/lib/auth-client';
|
import { authClient } from '@/lib/auth-client';
|
||||||
import { useCreditsStore } from '@/stores/credits-store';
|
import { useCreditsStore } from '@/stores/credits-store';
|
||||||
import { useCallback, useEffect } from 'react';
|
import { useCallback, useEffect } from 'react';
|
||||||
@ -7,8 +8,21 @@ import { useCallback, useEffect } from 'react';
|
|||||||
*
|
*
|
||||||
* This hook provides access to the credits state and methods to manage it.
|
* This hook provides access to the credits state and methods to manage it.
|
||||||
* It also automatically fetches credits information when the user changes.
|
* It also automatically fetches credits information when the user changes.
|
||||||
|
* Only works when credits are enabled in the website configuration.
|
||||||
*/
|
*/
|
||||||
export function useCredits() {
|
export function useCredits() {
|
||||||
|
// Return default values if credits are disabled
|
||||||
|
if (!websiteConfig.credits.enableCredits) {
|
||||||
|
return {
|
||||||
|
balance: 0,
|
||||||
|
isLoading: false,
|
||||||
|
error: null,
|
||||||
|
fetchCredits: () => Promise.resolve(),
|
||||||
|
consumeCredits: () => Promise.resolve(false),
|
||||||
|
hasEnoughCredits: () => false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
balance,
|
balance,
|
||||||
isLoading,
|
isLoading,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
|
import { websiteConfig } from '@/config/website';
|
||||||
import { authClient } from '@/lib/auth-client';
|
import { authClient } from '@/lib/auth-client';
|
||||||
import { useCreditsStore } from '@/stores/credits-store';
|
import { useCreditsStore } from '@/stores/credits-store';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
@ -9,8 +10,14 @@ import { useEffect } from 'react';
|
|||||||
*
|
*
|
||||||
* This component initializes the credits store when the user is authenticated
|
* This component initializes the credits store when the user is authenticated
|
||||||
* and handles cleanup when the user logs out.
|
* and handles cleanup when the user logs out.
|
||||||
|
* Only renders when credits are enabled in the website configuration.
|
||||||
*/
|
*/
|
||||||
export function CreditsProvider({ children }: { children: React.ReactNode }) {
|
export function CreditsProvider({ children }: { children: React.ReactNode }) {
|
||||||
|
// Only initialize credits store if credits are enabled
|
||||||
|
if (!websiteConfig.credits.enableCredits) {
|
||||||
|
return <>{children}</>;
|
||||||
|
}
|
||||||
|
|
||||||
const { fetchCredits } = useCreditsStore();
|
const { fetchCredits } = useCreditsStore();
|
||||||
const { data: session } = authClient.useSession();
|
const { data: session } = authClient.useSession();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user