| import { useRecoilValue } from 'recoil'; |
| import { useGetModelsQuery } from 'librechat-data-provider/react-query'; |
| import { getEndpointField, SettingsViews } from 'librechat-data-provider'; |
| import type { TConversation } from 'librechat-data-provider'; |
| import type { TSettingsProps } from '~/common'; |
| import { useGetEndpointsQuery } from '~/data-provider'; |
| import { getSettings } from './Settings'; |
| import { cn } from '~/utils'; |
| import store from '~/store'; |
|
|
| export default function Settings({ |
| conversation, |
| setOption, |
| isPreset = false, |
| className = '', |
| }: TSettingsProps) { |
| const modelsQuery = useGetModelsQuery(); |
| const { data: endpointsConfig } = useGetEndpointsQuery(); |
| const currentSettingsView = useRecoilValue(store.currentSettingsView); |
| const endpointType = getEndpointField(endpointsConfig, conversation?.endpoint ?? '', 'type'); |
| const endpoint = endpointType ?? conversation?.endpoint ?? ''; |
| if (!endpoint || currentSettingsView !== SettingsViews.default) { |
| return null; |
| } |
|
|
| const { settings, multiViewSettings } = getSettings(); |
| const { endpoint: _endpoint } = conversation as TConversation; |
| const models = modelsQuery.data?.[_endpoint ?? ''] ?? []; |
| const OptionComponent = settings[endpoint]; |
|
|
| if (OptionComponent) { |
| return ( |
| <div className={cn('h-[500px] overflow-y-auto md:mb-2 md:h-[350px]', className)}> |
| <OptionComponent |
| conversation={conversation} |
| setOption={setOption} |
| models={models} |
| isPreset={isPreset} |
| /> |
| </div> |
| ); |
| } |
|
|
| const MultiViewComponent = multiViewSettings[endpoint]; |
|
|
| if (MultiViewComponent == null) { |
| return null; |
| } |
|
|
| return ( |
| <div className={cn('hide-scrollbar h-[500px] overflow-y-auto md:mb-2 md:h-[350px]', className)}> |
| <MultiViewComponent conversation={conversation} models={models} isPreset={isPreset} /> |
| </div> |
| ); |
| } |
|
|