| | import React, { createContext, useContext, useMemo } from 'react'; |
| | import type { EModelEndpoint } from 'librechat-data-provider'; |
| | import { useChatContext } from './ChatContext'; |
| |
|
| | interface SidePanelContextValue { |
| | endpoint?: EModelEndpoint | null; |
| | } |
| |
|
| | const SidePanelContext = createContext<SidePanelContextValue | undefined>(undefined); |
| |
|
| | export function SidePanelProvider({ children }: { children: React.ReactNode }) { |
| | const { conversation } = useChatContext(); |
| |
|
| | |
| | const contextValue = useMemo<SidePanelContextValue>( |
| | () => ({ |
| | endpoint: conversation?.endpoint, |
| | }), |
| | [conversation?.endpoint], |
| | ); |
| |
|
| | return <SidePanelContext.Provider value={contextValue}>{children}</SidePanelContext.Provider>; |
| | } |
| |
|
| | export function useSidePanelContext() { |
| | const context = useContext(SidePanelContext); |
| | if (!context) { |
| | throw new Error('useSidePanelContext must be used within SidePanelProvider'); |
| | } |
| | return context; |
| | } |
| |
|