import { Button, Fieldset, Flex, rem, Textarea, TextInput } from "@mantine/core"; import { useDealPageContext } from "../../../contexts/DealPageContext.tsx"; import { useForm } from "@mantine/form"; import { DealGeneralFormType } from "./DealEditDrawerGeneralTab.tsx"; import { ClientService, DealSchema, DealService } from "../../../../../client"; import { isEqual } from "lodash"; import { notifications } from "../../../../../shared/lib/notifications.ts"; import { useQueryClient } from "@tanstack/react-query"; const ClientTab = () => { const { selectedDeal: deal, setSelectedDeal } = useDealPageContext(); const initialValues: DealGeneralFormType = deal as DealSchema; const queryClient = useQueryClient(); const form = useForm( { initialValues: initialValues, validate: { name: (value: string) => value.length > 0 ? null : "Название сделки не может быть пустым", }, }, ); const hasChanges = !isEqual(form.values, initialValues); const updateClientInfo = async (values: DealGeneralFormType) => { return ClientService.updateClient({ requestBody: { data: values.client, }, }).then(({ ok, message }) => notifications.guess(ok, { message })); }; const update = async () => { return DealService.getDealById({ dealId: form.values.id }).then(data => { setSelectedDeal(data); form.setInitialValues(data); queryClient.invalidateQueries({ queryKey: ["getDealSummaries"], }); }); }; const handleSave = () => { updateClientInfo(form.values).then(async () => { await update(); }); }; const handleCancel = () => { form.setInitialValues(initialValues); }; return (