// imports import React, { useState, useEffect } from 'react'; // locals import Input from '../Input'; import Button from '../Button'; import Overlay from '../Overlay'; import ApiSignal from '../../signals/Api'; import useTeam from '../../hooks/useTeam'; import Signal, { useSignal } from '../../signal'; // open export const agent = new Signal.State(null); export const remove = new Signal.State(null); export const onAgentUpdate = new Signal.State(null); /** * component agent modal * * @param props */ const ComponentAgentModal = (props = {}) => { // signals const [api] = useSignal(ApiSignal); const [sAgent, setAgent] = useSignal(agent); // team const team = useTeam(); // state const [prompt, setPrompt] = useState(''); const [saving, setSaving] = useState(false); // on save const onSave = async () => { // save agent if (saving) return; // set saving setAgent({ ...sAgent, prompt, }); setSaving(true); // try/catch try { // save agent const result = await api.Agent[sAgent?.id ? 'update' : 'create']({ ...sAgent, prompt, team : team?.id, }); // set agent value setAgent(result.agent); // on change1 if (props.onChange) props.onChange(sAgent); } catch (e) { // log console.error(e); } finally { // set saving setSaving(false); } }; // use effect useEffect(() => { setPrompt(sAgent?.prompt || ''); }, [sAgent?.prompt]); // return jsx return ( setAgent(null)} subtitle={api.translate('agent:dialog.subtitle', 'Create a new agent')} > setAgent({ ...sAgent, name : e.target.value })} placeholder={api.translate('agent:form.name.placeholder', 'Agent Name')} /> setPrompt(e.target.value)} placeholder={api.translate('agent:form.prompt.placeholder', 'Agent Prompt')} minRows={6} />
) }; /** * export component agent modal */ export default ComponentAgentModal;