R-Kentaren's picture
Upload folder using huggingface_hub
4efde5d verified
'use client';
import { createMutationHook, createQueryHook } from '@/hooks/use-query';
import {
createCheckoutSession,
checkBillingStatus,
getAvailableModels,
CreateCheckoutSessionRequest
} from '@/lib/api';
import { billingApi } from '@/lib/api-enhanced';
import { modelKeys, usageKeys } from './keys';
export const useAvailableModels = createQueryHook(
modelKeys.available,
getAvailableModels,
{
staleTime: 10 * 60 * 1000,
refetchOnWindowFocus: false,
}
);
export const useBillingStatus = createQueryHook(
['billing', 'status'],
checkBillingStatus,
{
staleTime: 5 * 60 * 1000, // 5 minutes
gcTime: 10 * 60 * 1000, // 10 minutes cache time
refetchOnWindowFocus: false, // Don't refetch on window focus
refetchOnMount: false, // Don't refetch on mount if data exists
refetchOnReconnect: true, // Only refetch when network reconnects
}
);
export const useCreateCheckoutSession = createMutationHook(
(request: CreateCheckoutSessionRequest) => createCheckoutSession(request),
{
onSuccess: (data) => {
if (data.url) {
window.location.href = data.url;
}
},
errorContext: {
operation: 'create checkout session',
resource: 'billing'
}
}
);
export const useUsageLogs = (page: number = 0, itemsPerPage: number = 1000) =>
createQueryHook(
usageKeys.logs(page, itemsPerPage),
() => billingApi.getUsageLogs(page, itemsPerPage),
{
staleTime: 30 * 1000, // 30 seconds
refetchOnMount: true,
refetchOnWindowFocus: false,
}
)();