"use client"; import { tools } from "@/data/data"; import { Agent } from "@/types/agent"; import { Icon } from "@iconify/react"; import React, { useEffect, useState } from "react"; import { TERipple, TEModal, TEModalDialog, TEModalContent, TEModalHeader, TEModalBody, TEModalFooter, TEInput, TETextarea, TESelect, } from "tw-elements-react"; import TWFileInput from "../inputs/file"; import { selectTheme } from "@/data/consts"; import { Button, Switch } from "@material-tailwind/react"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { UPDATE_AGENT } from "@/utils/graphql_queries"; import { useMutation } from "@apollo/client"; export default function AgentModal(props: { agent: Agent; showModal: boolean; setShowModal: Function; onUpdateAgent: Function; }): JSX.Element { const { agent, showModal, setShowModal, onUpdateAgent = () => {} } = props; const [isEdit, setEdit] = useState(false); const [tempAgent, setTempAgent] = useState(agent); useEffect(() => { setTempAgent(agent); }, [agent]); const [selectedImage, setSelectedImage] = useState< string | ArrayBuffer | null >(null); const handleImageChange = (event: React.ChangeEvent) => { const file = event?.target?.files?.[0]; const reader = new FileReader(); reader.onloadend = () => { setSelectedImage(reader.result); }; if (file) { reader.readAsDataURL(file); } }; const [updateAgent] = useMutation(UPDATE_AGENT); const [updateAgentLoading, setUpdateAgentLoading] = useState(false); const handleUpdateAgent = async (agentData: Agent) => { setUpdateAgentLoading(true); return updateAgent({ variables: { ...agentData, id: Number.parseInt(agentData.id as string), }, }).finally(() => { setUpdateAgentLoading(false); }); }; const ReactSwal = withReactContent(Swal); return (

{agent?.role}

{isEdit && (
{ setTempAgent((prevState) => ({ ...prevState!, role: event.target.value, })); }} />
)}
{isEdit ? ( { setTempAgent((prevState) => ({ ...prevState!, goal: event.target.value, })); }} /> ) : (
{agent?.goal}
)}
{isEdit ? ( { setTempAgent((prevState) => ({ ...prevState!, backstory: event.target.value, })); }} /> ) : (
{agent?.backstory}
)}
Tools: {isEdit ? ( { const newValue = event.map((item: any) => item.value); setTempAgent((prevState) => ({ ...prevState!, tools: newValue, })); }} className="w-full" theme={selectTheme} /> ) : ( agent?.tools.map((tool) => ( {tool} )) )}
{isEdit ? ( { setTempAgent((prevState) => ({ ...prevState!, allowDelegation: !!event.target.value, })); }} /> ) : ( )}
{isEdit ? ( { setTempAgent((prevState) => ({ ...prevState!, verbose: !!event.target.value, })); }} /> ) : ( )}
{isEdit ? ( <> {selectedImage && ( Agent Image )} ) : ( Software Engineer )}
{!isEdit && ( )} {isEdit && ( <> )}
); }