Fix: Resolve "Nova Despesa" button issue

The AI will address the issue where the "Nova Despesa" button causes problems, specifically for the user "leopootz10@gmail.com". The changes will focus on the `TransactionForm.tsx`, `useTransactionForm.ts`, and `TransactionDialogs.tsx` files.
This commit is contained in:
gpt-engineer-app[bot] 2025-06-06 18:50:28 +00:00
parent c25272b68f
commit bfdd935853
2 changed files with 60 additions and 38 deletions

View File

@ -1,14 +1,8 @@
import { FormControl, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { FormField, FormItem, FormLabel, FormControl, FormMessage } from '@/components/ui/form';
import { import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
Select, import { UseFormReturn } from 'react-hook-form';
SelectContent, import { TransactionFormValues } from '@/hooks/useTransactionForm';
SelectItem,
SelectTrigger,
SelectValue
} from "@/components/ui/select";
import { UseFormReturn } from "react-hook-form";
import { TransactionFormValues } from "@/hooks/useTransactionForm";
interface GroupSelectFieldProps { interface GroupSelectFieldProps {
form: UseFormReturn<TransactionFormValues>; form: UseFormReturn<TransactionFormValues>;
@ -16,30 +10,48 @@ interface GroupSelectFieldProps {
} }
export function GroupSelectField({ form, grupos }: GroupSelectFieldProps) { export function GroupSelectField({ form, grupos }: GroupSelectFieldProps) {
if (grupos.length === 0) return null; console.log('🏷️ GroupSelectField - grupos recebidos:', grupos);
// Filtrar grupos válidos (com remote_jid não vazio)
const gruposValidos = grupos.filter(grupo =>
grupo.remote_jid &&
grupo.remote_jid.trim() !== '' &&
grupo.remote_jid !== null
);
console.log('✅ Grupos válidos para o select:', gruposValidos);
return ( return (
<FormItem> <FormField
<FormLabel>Grupo WhatsApp (opcional)</FormLabel> control={form.control}
<Select name="grupo_id"
onValueChange={(value) => form.setValue("grupo_id", value === "none" ? null : value)} render={({ field }) => (
value={form.getValues("grupo_id") || undefined} <FormItem>
> <FormLabel>Grupo (Opcional)</FormLabel>
<FormControl> <Select
<SelectTrigger> onValueChange={(value) => field.onChange(value || null)}
<SelectValue placeholder="Selecione um grupo (opcional)" /> value={field.value || ""}
</SelectTrigger> >
</FormControl> <FormControl>
<SelectContent> <SelectTrigger>
<SelectItem value="none">Nenhum grupo</SelectItem> <SelectValue placeholder="Selecione um grupo (opcional)" />
{grupos.map((grupo) => ( </SelectTrigger>
<SelectItem key={grupo.remote_jid} value={grupo.remote_jid}> </FormControl>
{grupo.nome_grupo || grupo.remote_jid} <SelectContent>
</SelectItem> <SelectItem value="">Nenhum grupo</SelectItem>
))} {gruposValidos.map((grupo) => (
</SelectContent> <SelectItem
</Select> key={grupo.remote_jid}
<FormMessage /> value={grupo.remote_jid}
</FormItem> >
{grupo.nome_grupo || 'Grupo sem nome'}
</SelectItem>
))}
</SelectContent>
</Select>
<FormMessage />
</FormItem>
)}
/>
); );
} }

View File

@ -1,4 +1,3 @@
import { useState, useCallback } 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';
@ -39,6 +38,7 @@ export const useTransactionForm = (
if (!userEmail) { if (!userEmail) {
console.error('❌ Email do usuário não encontrado no localStorage'); console.error('❌ Email do usuário não encontrado no localStorage');
setGrupos([]);
return; return;
} }
@ -59,18 +59,28 @@ export const useTransactionForm = (
if (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([]); setGrupos([]);
} else if (data) { } else if (data) {
console.log(`${data.length} grupos encontrados`); // Filtrar grupos que têm remote_jid válido (não vazio e não null)
setGrupos(data); const gruposValidos = data.filter(grupo =>
grupo.remote_jid &&
grupo.remote_jid.trim() !== '' &&
grupo.remote_jid !== null
);
console.log(`${data.length} grupos encontrados, ${gruposValidos.length} grupos válidos`);
if (gruposValidos.length !== data.length) {
console.warn('⚠️ Alguns grupos foram filtrados por terem remote_jid inválido');
}
setGrupos(gruposValidos);
} else { } else {
console.log('📝 Nenhum grupo encontrado, definindo array vazio'); console.log('📝 Nenhum grupo encontrado, definindo array vazio');
setGrupos([]); setGrupos([]);
} }
} catch (error) { } catch (error) {
console.error('💥 Erro inesperado ao buscar grupos:', error); console.error('💥 Erro inesperado ao buscar grupos:', error);
// Garantir que sempre temos um array vazio em caso de erro
setGrupos([]); setGrupos([]);
} }
}, []); }, []);