llama1's picture
Upload 781 files
5da4770 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: 2 * 60 * 1000,
refetchOnWindowFocus: true,
}
);
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,
}
)();