From 3cc9ca31c8a9ec9b29d945c82d3eeda6fdc31ff7 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:44:28 +0000 Subject: [PATCH] Fix: Bug when creating new expense The AI will investigate and fix a bug that occurs when the "Nova Despesa" button is pressed in production. --- src/components/dashboard/TransactionForm.tsx | 2 +- .../transacoes/TransactionDialogs.tsx | 12 ++++- src/hooks/useTransactionForm.ts | 49 ++++++++++--------- 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/components/dashboard/TransactionForm.tsx b/src/components/dashboard/TransactionForm.tsx index eb77e9a..1b16252 100644 --- a/src/components/dashboard/TransactionForm.tsx +++ b/src/components/dashboard/TransactionForm.tsx @@ -43,7 +43,7 @@ export function TransactionForm({ // Fetch user groups when the form loads useEffect(() => { fetchGrupos(); - }, []); + }, [fetchGrupos]); return (
diff --git a/src/components/transacoes/TransactionDialogs.tsx b/src/components/transacoes/TransactionDialogs.tsx index 001ee23..c52268b 100644 --- a/src/components/transacoes/TransactionDialogs.tsx +++ b/src/components/transacoes/TransactionDialogs.tsx @@ -40,7 +40,11 @@ export const TransactionDialogs = ({ return ( <> {/* Dialog para transações */} - + { + if (!open) { + onCloseDialog(); + } + }}> @@ -67,7 +71,11 @@ export const TransactionDialogs = ({ {/* Dialog para despesas de cartão */} - + { + if (!open) { + onCloseCartaoCreditoDialog(); + } + }}> Nova Despesa de Cartão diff --git a/src/hooks/useTransactionForm.ts b/src/hooks/useTransactionForm.ts index c02869e..3b38142 100644 --- a/src/hooks/useTransactionForm.ts +++ b/src/hooks/useTransactionForm.ts @@ -1,4 +1,5 @@ -import { useState } from 'react'; + +import { useState, useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import * as z from 'zod'; @@ -31,26 +32,30 @@ export const useTransactionForm = ( const { toast } = useToast(); // Fetch user groups when the form loads - const fetchGrupos = async () => { - const userEmail = localStorage.getItem('userEmail'); - if (!userEmail) { - console.error('Email do usuário não encontrado'); - return; - } - - const normalizedEmail = userEmail.trim().toLowerCase(); - - const { data, error } = await supabase - .from('grupos_whatsapp') - .select('remote_jid, nome_grupo') - .eq('login', normalizedEmail); + const fetchGrupos = useCallback(async () => { + try { + const userEmail = localStorage.getItem('userEmail'); + if (!userEmail) { + console.error('Email do usuário não encontrado'); + return; + } - if (error) { + const normalizedEmail = userEmail.trim().toLowerCase(); + + const { data, error } = await supabase + .from('grupos_whatsapp') + .select('remote_jid, nome_grupo') + .eq('login', normalizedEmail); + + if (error) { + console.error('Erro ao buscar grupos:', error); + } else if (data) { + setGrupos(data); + } + } catch (error) { console.error('Erro ao buscar grupos:', error); - } else if (data) { - setGrupos(data); } - }; + }, []); // Set up form with default values or transaction data if editing const form = useForm({ @@ -68,7 +73,7 @@ export const useTransactionForm = ( } }); - async function onSubmit(data: TransactionFormValues) { + const onSubmit = async (data: TransactionFormValues) => { setIsSubmitting(true); try { @@ -92,10 +97,10 @@ export const useTransactionForm = ( const valorNumerico = parseFloat(data.valor.replace(',', '.')); - if (isNaN(valorNumerico)) { + if (isNaN(valorNumerico) || valorNumerico <= 0) { toast({ title: "Erro no formulário", - description: "O valor precisa ser um número válido", + description: "O valor precisa ser um número válido e maior que zero", variant: "destructive" }); return; @@ -176,7 +181,7 @@ export const useTransactionForm = ( } finally { setIsSubmitting(false); } - } + }; return { form,