'use client' import type { FC, ReactNode } from 'react' import type { ExternalAPIItem, ExternalAPIListResponse } from '@/models/datasets' import { createContext, use, useCallback, useMemo } from 'react' import { useExternalKnowledgeApiList } from '@/service/knowledge/use-dataset' type ExternalKnowledgeApiContextType = { externalKnowledgeApiList: ExternalAPIItem[] mutateExternalKnowledgeApis: () => Promise isLoading: boolean } const ExternalKnowledgeApiContext = createContext(undefined) type ExternalKnowledgeApiProviderProps = { children: ReactNode enabled?: boolean } export const ExternalKnowledgeApiProvider: FC = ({ children, enabled = true }) => { const { data, refetch, isLoading } = useExternalKnowledgeApiList({ enabled }) const mutateExternalKnowledgeApis = useCallback(() => { if (!enabled) return Promise.resolve(undefined) return refetch().then(res => res.data) }, [enabled, refetch]) const contextValue = useMemo(() => ({ externalKnowledgeApiList: data?.data || [], mutateExternalKnowledgeApis, isLoading, }), [data, mutateExternalKnowledgeApis, isLoading]) return ( {children} ) } export const useExternalKnowledgeApi = () => { const context = use(ExternalKnowledgeApiContext) if (context === undefined) throw new Error('useExternalKnowledgeApi must be used within a ExternalKnowledgeApiProvider') return context }