Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
external-knowledge-api-context.tsx47 linesDownload Raw Back to context
1'use client'2 3import { createContext, useContext, useMemo } from 'react'4import type { FC, ReactNode } from 'react'5import useSWR from 'swr'6import type { ExternalAPIItem, ExternalAPIListResponse } from '@/models/datasets'7import { fetchExternalAPIList } from '@/service/datasets'8 9type ExternalKnowledgeApiContextType = {10  externalKnowledgeApiList: ExternalAPIItem[]11  mutateExternalKnowledgeApis: () => Promise<ExternalAPIListResponse | undefined>12  isLoading: boolean13}14 15const ExternalKnowledgeApiContext = createContext<ExternalKnowledgeApiContextType | undefined>(undefined)16 17export type ExternalKnowledgeApiProviderProps = {18  children: ReactNode19}20 21export const ExternalKnowledgeApiProvider: FC<ExternalKnowledgeApiProviderProps> = ({ children }) => {22  const { data, mutate: mutateExternalKnowledgeApis, isLoading } = useSWR<ExternalAPIListResponse>(23    { url: '/datasets/external-knowledge-api' },24    fetchExternalAPIList,25  )26 27  const contextValue = useMemo<ExternalKnowledgeApiContextType>(() => ({28    externalKnowledgeApiList: data?.data || [],29    mutateExternalKnowledgeApis,30    isLoading,31  }), [data, mutateExternalKnowledgeApis, isLoading])32 33  return (34    <ExternalKnowledgeApiContext.Provider value={contextValue}>35      {children}36    </ExternalKnowledgeApiContext.Provider>37  )38}39 40export const useExternalKnowledgeApi = () => {41  const context = useContext(ExternalKnowledgeApiContext)42  if (context === undefined)43    throw new Error('useExternalKnowledgeApi must be used within a ExternalKnowledgeApiProvider')44 45  return context46}47