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} + + )} ) : (