From c25272b68fbec7d843dabb524289e18da3b0719c Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 18:48:39 +0000 Subject: [PATCH] Fix: Nova Despesa button issue for specific user The AI will investigate and resolve a bug that occurs when the "Nova Despesa" button is clicked by the user leopootz10@gmail.com. --- src/components/dashboard/TransactionForm.tsx | 10 +++- src/hooks/useTransactionForm.ts | 53 ++++++++++++++++---- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/src/components/dashboard/TransactionForm.tsx b/src/components/dashboard/TransactionForm.tsx index 1b16252..43949f2 100644 --- a/src/components/dashboard/TransactionForm.tsx +++ b/src/components/dashboard/TransactionForm.tsx @@ -42,9 +42,17 @@ export function TransactionForm({ // Fetch user groups when the form loads useEffect(() => { - fetchGrupos(); + console.log('šŸ”„ TransactionForm useEffect - carregando grupos'); + const userEmail = localStorage.getItem('userEmail'); + console.log('šŸ‘¤ UsuĆ”rio atual:', userEmail); + + fetchGrupos().catch(error => { + console.error('āŒ Erro ao carregar grupos no useEffect:', error); + }); }, [fetchGrupos]); + console.log('šŸŽÆ TransactionForm renderizando - grupos disponĆ­veis:', grupos.length); + return (
diff --git a/src/hooks/useTransactionForm.ts b/src/hooks/useTransactionForm.ts index 3b38142..839d909 100644 --- a/src/hooks/useTransactionForm.ts +++ b/src/hooks/useTransactionForm.ts @@ -35,25 +35,43 @@ export const useTransactionForm = ( const fetchGrupos = useCallback(async () => { try { const userEmail = localStorage.getItem('userEmail'); + console.log('šŸ” Buscando grupos para usuĆ”rio:', userEmail); + if (!userEmail) { - console.error('Email do usuĆ”rio nĆ£o encontrado'); + console.error('āŒ Email do usuĆ”rio nĆ£o encontrado no localStorage'); return; } const normalizedEmail = userEmail.trim().toLowerCase(); + console.log('šŸ“§ Email normalizado:', normalizedEmail); + + // Log especĆ­fico para o usuĆ”rio problemĆ”tico + if (normalizedEmail === 'leopootz10@gmail.com') { + console.log('šŸ† UsuĆ”rio especĆ­fico detectado - leopootz10@gmail.com'); + } const { data, error } = await supabase .from('grupos_whatsapp') .select('remote_jid, nome_grupo') .eq('login', normalizedEmail); + console.log('šŸ“Š Resultado da busca de grupos:', { data, error }); + if (error) { - console.error('Erro ao buscar grupos:', error); + console.error('āŒ Erro ao buscar grupos:', error); + // NĆ£o bloquear o formulĆ”rio se nĆ£o conseguir buscar grupos + setGrupos([]); } else if (data) { + console.log(`āœ… ${data.length} grupos encontrados`); setGrupos(data); + } else { + console.log('šŸ“ Nenhum grupo encontrado, definindo array vazio'); + setGrupos([]); } } catch (error) { - console.error('Erro ao buscar grupos:', error); + console.error('šŸ’„ Erro inesperado ao buscar grupos:', error); + // Garantir que sempre temos um array vazio em caso de erro + setGrupos([]); } }, []); @@ -74,6 +92,7 @@ export const useTransactionForm = ( }); const onSubmit = async (data: TransactionFormValues) => { + console.log('šŸš€ Iniciando submissĆ£o do formulĆ”rio:', data); setIsSubmitting(true); try { @@ -81,6 +100,7 @@ export const useTransactionForm = ( const userEmail = localStorage.getItem('userEmail'); if (!userEmail) { + console.error('āŒ Email nĆ£o encontrado no localStorage'); toast({ title: "Erro no formulĆ”rio", description: "Email do usuĆ”rio nĆ£o encontrado", @@ -91,13 +111,22 @@ export const useTransactionForm = ( // Normalize the email (lowercase and trim spaces) const normalizedEmail = userEmail.trim().toLowerCase(); + console.log('šŸ“§ Email para salvar transação:', normalizedEmail); // Get user ID from localStorage - kept for compatibility const userId = localStorage.getItem('userId') || ''; - const valorNumerico = parseFloat(data.valor.replace(',', '.')); - - if (isNaN(valorNumerico) || valorNumerico <= 0) { + // Validação mais robusta do valor + let valorNumerico: number; + try { + const valorString = String(data.valor).replace(',', '.'); + valorNumerico = parseFloat(valorString); + + if (!valorString || isNaN(valorNumerico) || valorNumerico <= 0) { + throw new Error('Valor invĆ”lido'); + } + } catch (error) { + console.error('āŒ Erro na validação do valor:', data.valor); toast({ title: "Erro no formulĆ”rio", description: "O valor precisa ser um nĆŗmero vĆ”lido e maior que zero", @@ -111,10 +140,12 @@ export const useTransactionForm = ( ? Math.abs(valorNumerico) : Math.abs(valorNumerico); - console.log(`Salvando transação para usuĆ”rio: ${normalizedEmail} (ID: ${userId})`); + console.log(`šŸ’° Valor final calculado: ${valorFinal} (tipo: ${data.tipo})`); + console.log(`šŸ“… Data da transação: ${data.quando}`); // Handle editing vs creating new transaction if (isEditing && transaction) { + console.log('āœļø Atualizando transação existente:', transaction.id); // Update existing transaction const updatedTransaction = { ...transaction, @@ -134,6 +165,7 @@ export const useTransactionForm = ( }); onSuccess(); } else { + console.log('āž• Criando nova transação'); // Create new transaction // Prepare transaction data including login and grupo_id const transactionData = { @@ -148,7 +180,7 @@ export const useTransactionForm = ( grupo_id: data.grupo_id || null }; - console.log('Dados da transação a serem salvos:', transactionData); + console.log('šŸ“Š Dados da transação a serem salvos:', transactionData); // With RLS disabled, we can insert directly to the fixed table const { error } = await supabase @@ -156,7 +188,7 @@ export const useTransactionForm = ( .insert([transactionData]); if (error) { - console.error('Erro ao salvar transação:', error); + console.error('āŒ Erro ao salvar transação no Supabase:', error); toast({ title: "Erro ao salvar", @@ -164,6 +196,7 @@ export const useTransactionForm = ( variant: "destructive" }); } else { + console.log('āœ… Transação salva com sucesso'); toast({ title: "Transação salva", description: "Transação registrada com sucesso", @@ -172,7 +205,7 @@ export const useTransactionForm = ( } } } catch (error) { - console.error('Erro ao processar formulĆ”rio:', error); + console.error('šŸ’„ Erro inesperado ao processar formulĆ”rio:', error); toast({ title: "Erro inesperado", description: "Ocorreu um erro ao processar sua solicitação",