/* eslint-disable react-hooks/exhaustive-deps */ import React, { useEffect, useState } from 'react'; // TODO: Temporarily remove checkbox until Plugins solution for Azure is figured out // import * as Checkbox from '@radix-ui/react-checkbox'; // import { CheckIcon } from '@radix-ui/react-icons'; import InputWithLabel from './InputWithLabel'; import type { TConfigProps } from '~/common'; function isJson(str: string) { try { JSON.parse(str); } catch (e) { return false; } return true; } const OpenAIConfig = ({ userKey, setUserKey, endpoint }: TConfigProps) => { const [showPanel, setShowPanel] = useState(endpoint === 'azureOpenAI'); useEffect(() => { if (isJson(userKey)) { setShowPanel(true); } setUserKey(''); }, []); useEffect(() => { if (!showPanel && isJson(userKey)) { setUserKey(''); } }, [showPanel]); function getAzure(name: string) { if (isJson(userKey)) { const newKey = JSON.parse(userKey); return newKey[name]; } else { return ''; } } function setAzure(name: string, value: number | string | boolean) { let newKey = {}; if (isJson(userKey)) { newKey = JSON.parse(userKey); } newKey[name] = value; setUserKey(JSON.stringify(newKey)); } return ( <> {!showPanel ? ( <> setUserKey(e.target.value ?? '')} label={'OpenAI API Key'} /> ) : ( <> setAzure('azureOpenAIApiInstanceName', e.target.value ?? '') } label={'Azure OpenAI Instance Name'} /> setAzure('azureOpenAIApiDeploymentName', e.target.value ?? '') } label={'Azure OpenAI Deployment Name'} /> setAzure('azureOpenAIApiVersion', e.target.value ?? '') } label={'Azure OpenAI API Version'} /> setAzure('azureOpenAIApiKey', e.target.value ?? '') } label={'Azure OpenAI API Key'} /> )} {/* { endpoint === 'gptPlugins' && (
setShowPanel(!showPanel)} >
)} */} ); }; export default OpenAIConfig;