diff --git a/src/food-market.web/src/pages/EmployeesPage.tsx b/src/food-market.web/src/pages/EmployeesPage.tsx index 9ab4814..d8964e7 100644 --- a/src/food-market.web/src/pages/EmployeesPage.tsx +++ b/src/food-market.web/src/pages/EmployeesPage.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react' -import { useQuery } from '@tanstack/react-query' +import { useQuery, useQueryClient } from '@tanstack/react-query' import { validateEmail, validatePhone } from '@/lib/validation' import { Plus, Trash2, Copy } from 'lucide-react' import { api, humanizeError } from '@/lib/api' @@ -82,6 +82,7 @@ const blankForm = (): Form => ({ }) export function EmployeesPage() { + const qc = useQueryClient() const { update, remove } = useCatalogMutations(URL, URL) const [form, setForm] = useState
(null) // Сгенерированный пароль возвращается с сервера один раз — показываем @@ -140,6 +141,9 @@ export function EmployeesPage() { } else { const res = await api.post<{ employee: EmployeeDto; generatedPassword: string | null }>(URL, payload) setForm(null); setActiveEmployee(null); setFieldErrors({}) + // Direct api.post — invalidate сам, useCatalogMutations.create мы тут + // не используем (нужен custom response shape с generatedPassword). + await qc.invalidateQueries({ queryKey: [URL] }) // Если сервер вернул password — показываем модалку one-shot. if (res.data.generatedPassword && res.data.employee.email) { setCreatedAccount({ email: res.data.employee.email, password: res.data.generatedPassword })