/* 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 store from '~/store'; function isJson(str: string) { try { JSON.parse(str); } catch (e) { return false; } return true; } type OpenAIConfigProps = { token: string; setToken: React.Dispatch>; endpoint: string; }; const OpenAIConfig = ({ token, setToken, endpoint }: OpenAIConfigProps) => { const [showPanel, setShowPanel] = useState(endpoint === 'azureOpenAI'); const { getToken } = store.useToken(endpoint); useEffect(() => { let oldToken = getToken(); if (isJson(token)) { setShowPanel(true); } setToken(oldToken ?? ''); }, []); useEffect(() => { if (!showPanel && isJson(token)) { setToken(''); } }, [showPanel]); function getAzure(name: string) { if (isJson(token)) { let newToken = JSON.parse(token); return newToken[name]; } else { return ''; } } function setAzure(name: string, value: any) { let newToken = {}; if (isJson(token)) { newToken = JSON.parse(token); } newToken[name] = value; setToken(JSON.stringify(newToken)); } return ( <> {!showPanel ? ( <> setToken(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;