12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use client'
- import { createContext, useContext, useMemo } from 'react'
- import type { FC, ReactNode } from 'react'
- import useSWR from 'swr'
- import type { ExternalAPIItem, ExternalAPIListResponse } from '@/models/datasets'
- import { fetchExternalAPIList } from '@/service/datasets'
- type ExternalKnowledgeApiContextType = {
- externalKnowledgeApiList: ExternalAPIItem[]
- mutateExternalKnowledgeApis: () => Promise<ExternalAPIListResponse | undefined>
- isLoading: boolean
- }
- const ExternalKnowledgeApiContext = createContext<ExternalKnowledgeApiContextType | undefined>(undefined)
- export type ExternalKnowledgeApiProviderProps = {
- children: ReactNode
- }
- export const ExternalKnowledgeApiProvider: FC<ExternalKnowledgeApiProviderProps> = ({ children }) => {
- const { data, mutate: mutateExternalKnowledgeApis, isLoading } = useSWR<ExternalAPIListResponse>(
- { url: '/datasets/external-knowledge-api' },
- fetchExternalAPIList,
- )
- const contextValue = useMemo<ExternalKnowledgeApiContextType>(() => ({
- externalKnowledgeApiList: data?.data || [],
- mutateExternalKnowledgeApis,
- isLoading,
- }), [data, mutateExternalKnowledgeApis, isLoading])
- return (
- <ExternalKnowledgeApiContext.Provider value={contextValue}>
- {children}
- </ExternalKnowledgeApiContext.Provider>
- )
- }
- export const useExternalKnowledgeApi = () => {
- const context = useContext(ExternalKnowledgeApiContext)
- if (context === undefined)
- throw new Error('useExternalKnowledgeApi must be used within a ExternalKnowledgeApiProvider')
- return context
- }
|