|
import React, { useState } from 'react'; |
|
import { TError } from 'librechat-data-provider'; |
|
|
|
type ProviderValue = { |
|
error: TError; |
|
setError: React.Dispatch<React.SetStateAction<boolean>>; |
|
}; |
|
const ApiErrorBoundaryContext = React.createContext<ProviderValue | undefined>(undefined); |
|
|
|
export const ApiErrorBoundaryProvider = ({ |
|
value, |
|
children, |
|
}: { |
|
value: ProviderValue; |
|
children: React.ReactNode; |
|
}) => { |
|
const [error, setError] = useState(false); |
|
return ( |
|
<ApiErrorBoundaryContext.Provider value={value ?? { error, setError }}> |
|
{children} |
|
</ApiErrorBoundaryContext.Provider> |
|
); |
|
}; |
|
|
|
export const useApiErrorBoundary = () => { |
|
const context = React.useContext(ApiErrorBoundaryContext); |
|
|
|
if (context === undefined) { |
|
throw new Error('useApiErrorBoundary must be used inside ApiErrorBoundaryProvider'); |
|
} |
|
|
|
return context; |
|
}; |
|
|