import { useMemo } from 'react' import { useQuery } from '@tanstack/react-query' import { useStatus } from '@/hooks/use-status' import { getPricing } from '../api' export function usePricingData() { const { status } = useStatus() const { data, isLoading, error, refetch } = useQuery({ queryKey: ['pricing'], queryFn: getPricing, staleTime: 5 * 60 * 1000, }) // Ensure rates never reach zero to prevent division errors const priceRate = useMemo( () => Math.max((status?.price as number) ?? 1, 0.001), [status?.price] ) const usdExchangeRate = useMemo( () => Math.max((status?.usd_exchange_rate as number) ?? priceRate, 0.001), [status?.usd_exchange_rate, priceRate] ) const models = useMemo(() => { if (!data?.data || !data?.vendors) return [] const vendorMap = new Map(data.vendors.map((v) => [v.id, v])) return data.data.map((model) => { const vendor = model.vendor_id ? vendorMap.get(model.vendor_id) : undefined return { ...model, key: model.model_name, vendor_name: vendor?.name, vendor_icon: vendor?.icon, vendor_description: vendor?.description, group_ratio: data.group_ratio, } }) }, [data]) return { models, vendors: data?.vendors ?? [], groupRatio: data?.group_ratio ?? {}, usableGroup: data?.usable_group ?? {}, endpointMap: data?.supported_endpoint ?? {}, autoGroups: data?.auto_groups ?? [], isLoading, error, refetch, priceRate, usdExchangeRate, } }