import React, { useEffect, useState } from 'react'; import { useSetRecoilState, useRecoilValue } from 'recoil'; import axios from 'axios'; import exportFromJSON from 'export-from-json'; import DialogTemplate from '../ui/DialogTemplate.jsx'; import { Dialog, DialogClose, DialogButton } from '../ui/Dialog.tsx'; import { Input } from '../ui/Input.tsx'; import { Label } from '../ui/Label.tsx'; import Dropdown from '../ui/Dropdown.jsx'; import SaveAsPresetDialog from './SaveAsPresetDialog'; import { cn } from '~/utils/'; import cleanupPreset from '~/utils/cleanupPreset'; import OpenAISettings from './OpenAI/Settings.jsx'; import BingAISettings from './BingAI/Settings.jsx'; import store from '~/store'; // A preset dialog to show readonly preset values. const EndpointOptionsDialog = ({ open, onOpenChange, preset: _preset, title }) => { // const [title, setTitle] = useState('My Preset'); const [preset, setPreset] = useState({}); const [saveAsDialogShow, setSaveAsDialogShow] = useState(false); const setOption = param => newValue => { let update = {}; update[param] = newValue; setPreset(prevState => ({ ...prevState, ...update })); }; const renderSettings = () => { const { endpoint } = preset || {}; if (endpoint === 'openAI') return ( ); else if (endpoint === 'bingAI') return ( ); else return null; }; const saveAsPreset = () => { setSaveAsDialogShow(true); }; const exportPreset = () => { exportFromJSON({ data: cleanupPreset(preset), fileName: `${preset?.title}.json`, exportType: exportFromJSON.types.json }); }; useEffect(() => { setPreset(_preset); }, [open]); return ( <>
{renderSettings()}
} buttons={ <> Save As Preset } leftButtons={ <> Export } />
); }; export default EndpointOptionsDialog;