import React, { useState } from "react"; import { Button, Flex, Label } from "theme-ui"; import Modal from "../components/Modal"; import TokenSettings from "../components/token/TokenSettings"; import TokenPreview from "../components/token/TokenPreview"; import LoadingOverlay from "../components/LoadingOverlay"; import { isEmpty } from "../helpers/shared"; import useResponsiveLayout from "../hooks/useResponsiveLayout"; function EditTokenModal({ isOpen, onDone, token, onUpdateToken }) { function handleClose() { setTokenSettingChanges({}); onDone(); } async function handleSave() { await applyTokenChanges(); onDone(); } const [tokenSettingChanges, setTokenSettingChanges] = useState({}); function handleTokenSettingsChange(key, value) { setTokenSettingChanges((prevChanges) => ({ ...prevChanges, [key]: value })); } async function applyTokenChanges() { if (token && !isEmpty(tokenSettingChanges)) { // Ensure size value is positive let verifiedChanges = { ...tokenSettingChanges }; if ("defaultSize" in verifiedChanges) { verifiedChanges.defaultSize = verifiedChanges.defaultSize || 1; } await onUpdateToken(token.id, verifiedChanges); setTokenSettingChanges({}); } } const selectedTokenWithChanges = { ...token, ...tokenSettingChanges, }; const layout = useResponsiveLayout(); return ( {!token ? ( ) : ( )} ); } export default EditTokenModal;