File size: 1,324 Bytes
5da4770 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
'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,
}
)(); |