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.
This commit is contained in:
parent
7d0dc19eb9
commit
3cc9ca31c8
@ -43,7 +43,7 @@ export function TransactionForm({
|
|||||||
// Fetch user groups when the form loads
|
// Fetch user groups when the form loads
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchGrupos();
|
fetchGrupos();
|
||||||
}, []);
|
}, [fetchGrupos]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
|
|||||||
@ -40,7 +40,11 @@ export const TransactionDialogs = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* Dialog para transações */}
|
{/* Dialog para transações */}
|
||||||
<Dialog open={isDialogOpen} onOpenChange={onCloseDialog}>
|
<Dialog open={isDialogOpen} onOpenChange={(open) => {
|
||||||
|
if (!open) {
|
||||||
|
onCloseDialog();
|
||||||
|
}
|
||||||
|
}}>
|
||||||
<DialogContent className="sm:max-w-[500px]">
|
<DialogContent className="sm:max-w-[500px]">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>
|
<DialogTitle>
|
||||||
@ -67,7 +71,11 @@ export const TransactionDialogs = ({
|
|||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
{/* Dialog para despesas de cartão */}
|
{/* Dialog para despesas de cartão */}
|
||||||
<Dialog open={isCartaoCreditoDialogOpen} onOpenChange={onCloseCartaoCreditoDialog}>
|
<Dialog open={isCartaoCreditoDialogOpen} onOpenChange={(open) => {
|
||||||
|
if (!open) {
|
||||||
|
onCloseCartaoCreditoDialog();
|
||||||
|
}
|
||||||
|
}}>
|
||||||
<DialogContent className="sm:max-w-[500px]">
|
<DialogContent className="sm:max-w-[500px]">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>Nova Despesa de Cartão</DialogTitle>
|
<DialogTitle>Nova Despesa de Cartão</DialogTitle>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useState } from 'react';
|
|
||||||
|
import { useState, useCallback } from 'react';
|
||||||
import { useForm } from 'react-hook-form';
|
import { useForm } from 'react-hook-form';
|
||||||
import { zodResolver } from '@hookform/resolvers/zod';
|
import { zodResolver } from '@hookform/resolvers/zod';
|
||||||
import * as z from 'zod';
|
import * as z from 'zod';
|
||||||
@ -31,26 +32,30 @@ export const useTransactionForm = (
|
|||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
|
|
||||||
// Fetch user groups when the form loads
|
// Fetch user groups when the form loads
|
||||||
const fetchGrupos = async () => {
|
const fetchGrupos = useCallback(async () => {
|
||||||
const userEmail = localStorage.getItem('userEmail');
|
try {
|
||||||
if (!userEmail) {
|
const userEmail = localStorage.getItem('userEmail');
|
||||||
console.error('Email do usuário não encontrado');
|
if (!userEmail) {
|
||||||
return;
|
console.error('Email do usuário não encontrado');
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
const normalizedEmail = userEmail.trim().toLowerCase();
|
||||||
|
|
||||||
const { data, error } = await supabase
|
const { data, error } = await supabase
|
||||||
.from('grupos_whatsapp')
|
.from('grupos_whatsapp')
|
||||||
.select('remote_jid, nome_grupo')
|
.select('remote_jid, nome_grupo')
|
||||||
.eq('login', normalizedEmail);
|
.eq('login', normalizedEmail);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
console.error('Erro ao buscar grupos:', error);
|
||||||
|
} else if (data) {
|
||||||
|
setGrupos(data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
console.error('Erro ao buscar grupos:', error);
|
console.error('Erro ao buscar grupos:', error);
|
||||||
} else if (data) {
|
|
||||||
setGrupos(data);
|
|
||||||
}
|
}
|
||||||
};
|
}, []);
|
||||||
|
|
||||||
// Set up form with default values or transaction data if editing
|
// Set up form with default values or transaction data if editing
|
||||||
const form = useForm<TransactionFormValues>({
|
const form = useForm<TransactionFormValues>({
|
||||||
@ -68,7 +73,7 @@ export const useTransactionForm = (
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
async function onSubmit(data: TransactionFormValues) {
|
const onSubmit = async (data: TransactionFormValues) => {
|
||||||
setIsSubmitting(true);
|
setIsSubmitting(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -92,10 +97,10 @@ export const useTransactionForm = (
|
|||||||
|
|
||||||
const valorNumerico = parseFloat(data.valor.replace(',', '.'));
|
const valorNumerico = parseFloat(data.valor.replace(',', '.'));
|
||||||
|
|
||||||
if (isNaN(valorNumerico)) {
|
if (isNaN(valorNumerico) || valorNumerico <= 0) {
|
||||||
toast({
|
toast({
|
||||||
title: "Erro no formulário",
|
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"
|
variant: "destructive"
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@ -176,7 +181,7 @@ export const useTransactionForm = (
|
|||||||
} finally {
|
} finally {
|
||||||
setIsSubmitting(false);
|
setIsSubmitting(false);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
form,
|
form,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user