From 997546915f16f125de248c7eead022d7a8b82b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Faleiros?= Date: Tue, 3 Mar 2026 18:12:57 -0300 Subject: [PATCH] fix: propagate and display backend errors correctly when creating or updating users --- pages/TeamManagement.tsx | 18 +++++++++++++----- services/dataService.ts | 20 ++++++++++++++++---- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/pages/TeamManagement.tsx b/pages/TeamManagement.tsx index c022d6a..00d5bdb 100644 --- a/pages/TeamManagement.tsx +++ b/pages/TeamManagement.tsx @@ -43,11 +43,19 @@ export const TeamManagement: React.FC = () => { setIsSaving(true); try { const tid = localStorage.getItem('ctms_tenant_id') || ''; - const success = editingUser - ? await updateUser(editingUser.id, formData) - : await createMember({ ...formData, tenant_id: tid }); - if (success) { setIsModalOpen(false); loadData(); } - } catch (err) { alert('Erro ao salvar'); } finally { setIsSaving(false); } + if (editingUser) { + const success = await updateUser(editingUser.id, formData); + if (success) { setIsModalOpen(false); loadData(); } + } else { + await createMember({ ...formData, tenant_id: tid }); + setIsModalOpen(false); + loadData(); + } + } catch (err: any) { + alert(err.message || 'Erro ao salvar membro. Verifique se o e-mail já não está cadastrado.'); + } finally { + setIsSaving(false); + } }; const handleConfirmDelete = async () => { diff --git a/services/dataService.ts b/services/dataService.ts index b9783fc..8407d22 100644 --- a/services/dataService.ts +++ b/services/dataService.ts @@ -88,10 +88,16 @@ export const updateUser = async (id: string, userData: any): Promise => headers: getHeaders(), body: JSON.stringify(userData) }); - return response.ok; + + if (!response.ok) { + const errorData = await response.json().catch(() => null); + throw new Error(errorData?.error || 'Erro ao atualizar usuário no servidor'); + } + + return true; } catch (error) { console.error("API Error (updateUser):", error); - return false; + throw error; } }; @@ -125,10 +131,16 @@ export const createMember = async (userData: any): Promise => { headers: getHeaders(), body: JSON.stringify(userData) }); - return response.ok; + + if (!response.ok) { + const errorData = await response.json().catch(() => null); + throw new Error(errorData?.error || 'Erro ao criar membro no servidor'); + } + + return true; } catch (error) { console.error("API Error (createMember):", error); - return false; + throw error; } };