import { mutate } from "swr"; import { useEffect } from "react"; import { useLockFn, useSetState } from "ahooks"; import { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField, } from "@mui/material"; import { CmdType } from "../../services/types"; import { patchProfile } from "../../services/cmds"; import Notice from "../base/base-notice"; interface Props { open: boolean; itemData: CmdType.ProfileItem; onClose: () => void; } // edit the profile item const ProfileEdit = (props: Props) => { const { open, itemData, onClose } = props; const [form, setForm] = useSetState({ ...itemData }); useEffect(() => { if (itemData) { setForm({ ...itemData }); } }, [itemData]); const onUpdate = useLockFn(async () => { try { const { uid } = itemData; const { name, desc, url } = form; await patchProfile(uid, { uid, name, desc, url }); mutate("getProfiles"); onClose(); } catch (err: any) { Notice.error(err?.message || err.toString()); } }); const textFieldProps = { fullWidth: true, size: "small", margin: "normal", variant: "outlined", } as const; const type = form.type || (form.url ? "remote" : form.file?.endsWith("js") ? "script" : "local"); return ( Edit Profile setForm({ name: e.target.value })} /> setForm({ desc: e.target.value })} /> {type === "remote" && ( setForm({ url: e.target.value })} /> )} ); }; export default ProfileEdit;