Fix: Transaction save error
Investigate and resolve an issue where saving new transactions fails, potentially unrelated to the database.
This commit is contained in:
parent
23ac89e158
commit
22136fc8a1
@ -88,16 +88,31 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
|
||||
? Math.abs(valorNumerico)
|
||||
: Math.abs(valorNumerico);
|
||||
|
||||
// Obtém a sessão atual para acessar o token JWT
|
||||
const { data: sessionData, error: sessionError } = await supabase.auth.getSession();
|
||||
|
||||
if (sessionError || !sessionData.session) {
|
||||
console.error('Erro ao obter sessão:', sessionError);
|
||||
toast({
|
||||
title: "Erro de autenticação",
|
||||
description: "Não foi possível validar sua sessão. Tente fazer login novamente.",
|
||||
variant: "destructive"
|
||||
});
|
||||
setIsSubmitting(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// Cria o nome da tabela dinâmica para este usuário
|
||||
const tabelaTransacoes = `transacoes_${userId}`;
|
||||
|
||||
// Insere a transação na tabela específica do usuário usando cast para any
|
||||
// para contornar a verificação estática de tipos
|
||||
console.log(`Inserindo transação na tabela ${tabelaTransacoes} para o usuário ${userId}`);
|
||||
|
||||
// Insere a transação na tabela específica do usuário
|
||||
const { error } = await supabase
|
||||
.from(tabelaTransacoes as any)
|
||||
.insert([
|
||||
{
|
||||
usuario_id: userId, // Alterado de user para usuario_id
|
||||
usuario_id: userId,
|
||||
estabelecimento: data.estabelecimento,
|
||||
valor: valorFinal,
|
||||
detalhes: data.detalhes,
|
||||
@ -111,7 +126,7 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
|
||||
console.error('Erro ao salvar transação:', error);
|
||||
toast({
|
||||
title: "Erro ao salvar",
|
||||
description: "Não foi possível salvar a transação",
|
||||
description: `Não foi possível salvar a transação: ${error.message}`,
|
||||
variant: "destructive"
|
||||
});
|
||||
} else {
|
||||
|
||||
@ -11,8 +11,17 @@ export async function getTransacoes(): Promise<Transaction[]> {
|
||||
return [];
|
||||
}
|
||||
|
||||
// Verificar se temos uma sessão válida
|
||||
const { data: sessionData } = await supabase.auth.getSession();
|
||||
if (!sessionData.session) {
|
||||
console.error('Sessão não encontrada');
|
||||
return [];
|
||||
}
|
||||
|
||||
const tabelaTransacoes = `transacoes_${userId}`;
|
||||
|
||||
console.log(`Consultando tabela: ${tabelaTransacoes}`);
|
||||
|
||||
// Usando .rpc para chamar uma função SQL ou .from() com cast para any para contornar a checagem de tipos
|
||||
const { data, error } = await supabase
|
||||
.from(tabelaTransacoes as any)
|
||||
@ -29,7 +38,7 @@ export async function getTransacoes(): Promise<Transaction[]> {
|
||||
// Transformar os dados recebidos para o formato esperado, normalizando os tipos
|
||||
return data.map((item: any) => ({
|
||||
id: item.id.toString(),
|
||||
user: item.usuario_id || '', // Alterado de user para usuario_id
|
||||
user: item.usuario_id || '',
|
||||
created_at: item.created_at,
|
||||
valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0),
|
||||
quando: item.quando || new Date().toISOString(),
|
||||
@ -49,6 +58,13 @@ export async function getTransactionSummary() {
|
||||
return { receitas: 0, despesas: 0, saldo: 0 };
|
||||
}
|
||||
|
||||
// Verificar se temos uma sessão válida
|
||||
const { data: sessionData } = await supabase.auth.getSession();
|
||||
if (!sessionData.session) {
|
||||
console.error('Sessão não encontrada');
|
||||
return { receitas: 0, despesas: 0, saldo: 0 };
|
||||
}
|
||||
|
||||
const tabelaTransacoes = `transacoes_${userId}`;
|
||||
|
||||
const { data, error } = await supabase
|
||||
|
||||
Loading…
Reference in New Issue
Block a user