Spaces:
Paused
Paused
| import { useQuery } from '@tanstack/react-query'; | |
| import providersDataRaw from './providers.json'; | |
| import { providersDataSchema, type ProvidersData } from './providers.schema'; | |
| const PROVIDERS_URL = 'https://raw.githubusercontent.com/ThinkInAIXYZ/PublicProviderConf/refs/heads/dev/dist/all.json'; | |
| const DEVELOPERS_URL = | |
| 'https://raw.githubusercontent.com/looplj/axonhub/refs/heads/unstable/frontend/src/features/models/data/providers.json'; | |
| export function useProvidersData() { | |
| return useQuery<ProvidersData>({ | |
| queryKey: ['providers-data'], | |
| queryFn: async () => { | |
| try { | |
| const response = await fetch(PROVIDERS_URL); | |
| if (!response.ok) { | |
| throw new Error('Failed to fetch providers data'); | |
| } | |
| const data = await response.json(); | |
| return providersDataSchema.parse(data); | |
| } catch (error) { | |
| console.error('Failed to fetch remote providers data, falling back to local:', error); | |
| return providersDataSchema.parse(providersDataRaw); | |
| } | |
| }, | |
| staleTime: 1000 * 60 * 60 * 24, // 1 day | |
| placeholderData: providersDataSchema.parse(providersDataRaw), | |
| }); | |
| } | |
| export function useDevelopersData() { | |
| return useQuery<ProvidersData>({ | |
| queryKey: ['developers-data'], | |
| queryFn: async () => { | |
| try { | |
| const response = await fetch(DEVELOPERS_URL); | |
| if (!response.ok) { | |
| throw new Error('Failed to fetch developers data'); | |
| } | |
| const data = await response.json(); | |
| return providersDataSchema.parse(data); | |
| } catch (error) { | |
| console.error('Failed to fetch remote developers data, falling back to local:', error); | |
| return providersDataSchema.parse(providersDataRaw); | |
| } | |
| }, | |
| staleTime: 1000 * 60 * 60 * 24, // 1 day | |
| placeholderData: providersDataSchema.parse(providersDataRaw), | |
| }); | |
| } | |