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