From 769836714a1df5675daaa607fd1197a85c6e569c Mon Sep 17 00:00:00 2001 From: houseassassin Date: Sun, 10 May 2026 13:11:09 +0300 Subject: [PATCH] fix: UserManagementPage delete error feedback, input disable, date guard Co-Authored-By: Claude Sonnet 4.6 --- src/admin/users/UserManagementPage.jsx | 95 ++++++++++++++------------ 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/src/admin/users/UserManagementPage.jsx b/src/admin/users/UserManagementPage.jsx index 99c496d..91c5066 100644 --- a/src/admin/users/UserManagementPage.jsx +++ b/src/admin/users/UserManagementPage.jsx @@ -47,7 +47,8 @@ const tdStyle = { const formatDate = (dateStr) => { if (!dateStr) return '—'; - return new Date(dateStr).toLocaleDateString('ru-RU'); + const d = new Date(dateStr); + return isNaN(d) ? '—' : d.toLocaleDateString('ru-RU'); }; const UserManagementPage = () => { @@ -59,6 +60,7 @@ const UserManagementPage = () => { const [confirmDeleteId, setConfirmDeleteId] = useState(null); const [deleting, setDeleting] = useState(false); + const [deleteError, setDeleteError] = useState(''); const handleInvite = async (e) => { e.preventDefault(); @@ -76,13 +78,14 @@ const UserManagementPage = () => { const handleDeleteConfirm = async (userId) => { setDeleting(true); + setDeleteError(''); try { await deleteUser(userId); - } catch { - // deletion errors surface in the hook's error state - } finally { setDeleting(false); setConfirmDeleteId(null); + } catch (err) { + setDeleting(false); + setDeleteError(err?.message ?? 'Ошибка удаления'); } }; @@ -128,6 +131,7 @@ const UserManagementPage = () => { value={inviteEmail} onChange={(e) => setInviteEmail(e.target.value)} required + disabled={inviting} style={inputStyle} /> + - - + {deleteError && ( + + {deleteError} + + )} ) : (