import { useEffect, useState } from "react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import Typography from "@mui/material/Typography"; import Modal from "@mui/material/Modal"; import TextField from "@mui/material/TextField"; import { enqueueSnackbar } from "notistack"; import { devlog, getMessageFromFetchError } from "@frontend/kitui"; import { closeEditTariffDialog, useTariffStore } from "@root/stores/tariffs"; import { putTariff } from "@root/api/tariffs"; import { requestTariffs } from "@root/services/tariffs.service"; export default function EditModal() { const [nameField, setNameField] = useState(""); const [priceField, setPriceField] = useState(""); const tariffs = useTariffStore((state) => state.tariffs); const editTariffId = useTariffStore(state => state.editTariffId); const tariff = tariffs.find(tariff => tariff._id === editTariffId); useEffect(function setCurrentTariffFields() { if (!tariff) return; setNameField(tariff.name); setPriceField((tariff.price || 0).toString()); }, [tariff]); async function handleEditClick() { if (!tariff) return enqueueSnackbar(`Тариф ${editTariffId} не найден`); const price = parseFloat(priceField); if (!isFinite(price)) return enqueueSnackbar("Поле \"Цена за единицу\" не число"); if (!nameField) return enqueueSnackbar("Поле \"Имя\" пустое"); const updatedTariff = structuredClone(tariff); updatedTariff.name = nameField; updatedTariff.price = price; try { await putTariff(updatedTariff); closeEditTariffDialog(); requestTariffs(); } catch (error) { devlog("Error updating tariff", error); const message = getMessageFromFetchError(error); if (message) enqueueSnackbar(message); } } return ( Редактирование тариффа {tariff && ( Название Тарифа: {tariff.name} setNameField(event.target.value)} label="Имя" name="name" value={nameField} sx={{ marginBottom: "10px" }} /> Цена за единицу: {tariff.privilegies[0].price} setPriceField(event.target.value)} label="Цена за единицу" name="price" value={priceField} sx={{ marginBottom: "10px" }} /> )} ); }