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.
This commit is contained in:
parent
3cc9ca31c8
commit
c25272b68f
@ -42,9 +42,17 @@ export function TransactionForm({
|
|||||||
|
|
||||||
// Fetch user groups when the form loads
|
// Fetch user groups when the form loads
|
||||||
useEffect(() => {
|
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]);
|
}, [fetchGrupos]);
|
||||||
|
|
||||||
|
console.log('🎯 TransactionForm renderizando - grupos disponíveis:', grupos.length);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
|
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
|
||||||
|
|||||||
@ -35,25 +35,43 @@ export const useTransactionForm = (
|
|||||||
const fetchGrupos = useCallback(async () => {
|
const fetchGrupos = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
const userEmail = localStorage.getItem('userEmail');
|
const userEmail = localStorage.getItem('userEmail');
|
||||||
|
console.log('🔍 Buscando grupos para usuário:', userEmail);
|
||||||
|
|
||||||
if (!userEmail) {
|
if (!userEmail) {
|
||||||
console.error('Email do usuário não encontrado');
|
console.error('❌ Email do usuário não encontrado no localStorage');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
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
|
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);
|
||||||
|
|
||||||
|
console.log('📊 Resultado da busca de grupos:', { data, error });
|
||||||
|
|
||||||
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([]);
|
||||||
} else if (data) {
|
} else if (data) {
|
||||||
|
console.log(`✅ ${data.length} grupos encontrados`);
|
||||||
setGrupos(data);
|
setGrupos(data);
|
||||||
|
} else {
|
||||||
|
console.log('📝 Nenhum grupo encontrado, definindo array vazio');
|
||||||
|
setGrupos([]);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} 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) => {
|
const onSubmit = async (data: TransactionFormValues) => {
|
||||||
|
console.log('🚀 Iniciando submissão do formulário:', data);
|
||||||
setIsSubmitting(true);
|
setIsSubmitting(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -81,6 +100,7 @@ export const useTransactionForm = (
|
|||||||
const userEmail = localStorage.getItem('userEmail');
|
const userEmail = localStorage.getItem('userEmail');
|
||||||
|
|
||||||
if (!userEmail) {
|
if (!userEmail) {
|
||||||
|
console.error('❌ Email não encontrado no localStorage');
|
||||||
toast({
|
toast({
|
||||||
title: "Erro no formulário",
|
title: "Erro no formulário",
|
||||||
description: "Email do usuário não encontrado",
|
description: "Email do usuário não encontrado",
|
||||||
@ -91,13 +111,22 @@ export const useTransactionForm = (
|
|||||||
|
|
||||||
// Normalize the email (lowercase and trim spaces)
|
// Normalize the email (lowercase and trim spaces)
|
||||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
const normalizedEmail = userEmail.trim().toLowerCase();
|
||||||
|
console.log('📧 Email para salvar transação:', normalizedEmail);
|
||||||
|
|
||||||
// Get user ID from localStorage - kept for compatibility
|
// Get user ID from localStorage - kept for compatibility
|
||||||
const userId = localStorage.getItem('userId') || '';
|
const userId = localStorage.getItem('userId') || '';
|
||||||
|
|
||||||
const valorNumerico = parseFloat(data.valor.replace(',', '.'));
|
// Validação mais robusta do valor
|
||||||
|
let valorNumerico: number;
|
||||||
|
try {
|
||||||
|
const valorString = String(data.valor).replace(',', '.');
|
||||||
|
valorNumerico = parseFloat(valorString);
|
||||||
|
|
||||||
if (isNaN(valorNumerico) || valorNumerico <= 0) {
|
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({
|
toast({
|
||||||
title: "Erro no formulário",
|
title: "Erro no formulário",
|
||||||
description: "O valor precisa ser um número válido e maior que zero",
|
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)
|
||||||
: 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
|
// Handle editing vs creating new transaction
|
||||||
if (isEditing && transaction) {
|
if (isEditing && transaction) {
|
||||||
|
console.log('✏️ Atualizando transação existente:', transaction.id);
|
||||||
// Update existing transaction
|
// Update existing transaction
|
||||||
const updatedTransaction = {
|
const updatedTransaction = {
|
||||||
...transaction,
|
...transaction,
|
||||||
@ -134,6 +165,7 @@ export const useTransactionForm = (
|
|||||||
});
|
});
|
||||||
onSuccess();
|
onSuccess();
|
||||||
} else {
|
} else {
|
||||||
|
console.log('➕ Criando nova transação');
|
||||||
// Create new transaction
|
// Create new transaction
|
||||||
// Prepare transaction data including login and grupo_id
|
// Prepare transaction data including login and grupo_id
|
||||||
const transactionData = {
|
const transactionData = {
|
||||||
@ -148,7 +180,7 @@ export const useTransactionForm = (
|
|||||||
grupo_id: data.grupo_id || null
|
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
|
// With RLS disabled, we can insert directly to the fixed table
|
||||||
const { error } = await supabase
|
const { error } = await supabase
|
||||||
@ -156,7 +188,7 @@ export const useTransactionForm = (
|
|||||||
.insert([transactionData]);
|
.insert([transactionData]);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error('Erro ao salvar transação:', error);
|
console.error('❌ Erro ao salvar transação no Supabase:', error);
|
||||||
|
|
||||||
toast({
|
toast({
|
||||||
title: "Erro ao salvar",
|
title: "Erro ao salvar",
|
||||||
@ -164,6 +196,7 @@ export const useTransactionForm = (
|
|||||||
variant: "destructive"
|
variant: "destructive"
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
console.log('✅ Transação salva com sucesso');
|
||||||
toast({
|
toast({
|
||||||
title: "Transação salva",
|
title: "Transação salva",
|
||||||
description: "Transação registrada com sucesso",
|
description: "Transação registrada com sucesso",
|
||||||
@ -172,7 +205,7 @@ export const useTransactionForm = (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Erro ao processar formulário:', error);
|
console.error('💥 Erro inesperado ao processar formulário:', error);
|
||||||
toast({
|
toast({
|
||||||
title: "Erro inesperado",
|
title: "Erro inesperado",
|
||||||
description: "Ocorreu um erro ao processar sua solicitação",
|
description: "Ocorreu um erro ao processar sua solicitação",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user