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)
|
||||||
: 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
|
// Cria o nome da tabela dinâmica para este usuário
|
||||||
const tabelaTransacoes = `transacoes_${userId}`;
|
const tabelaTransacoes = `transacoes_${userId}`;
|
||||||
|
|
||||||
// Insere a transação na tabela específica do usuário usando cast para any
|
console.log(`Inserindo transação na tabela ${tabelaTransacoes} para o usuário ${userId}`);
|
||||||
// para contornar a verificação estática de tipos
|
|
||||||
|
// Insere a transação na tabela específica do usuário
|
||||||
const { error } = await supabase
|
const { error } = await supabase
|
||||||
.from(tabelaTransacoes as any)
|
.from(tabelaTransacoes as any)
|
||||||
.insert([
|
.insert([
|
||||||
{
|
{
|
||||||
usuario_id: userId, // Alterado de user para usuario_id
|
usuario_id: userId,
|
||||||
estabelecimento: data.estabelecimento,
|
estabelecimento: data.estabelecimento,
|
||||||
valor: valorFinal,
|
valor: valorFinal,
|
||||||
detalhes: data.detalhes,
|
detalhes: data.detalhes,
|
||||||
@ -111,7 +126,7 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
|
|||||||
console.error('Erro ao salvar transação:', error);
|
console.error('Erro ao salvar transação:', error);
|
||||||
toast({
|
toast({
|
||||||
title: "Erro ao salvar",
|
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"
|
variant: "destructive"
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -11,8 +11,17 @@ export async function getTransacoes(): Promise<Transaction[]> {
|
|||||||
return [];
|
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}`;
|
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
|
// 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
|
const { data, error } = await supabase
|
||||||
.from(tabelaTransacoes as any)
|
.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
|
// Transformar os dados recebidos para o formato esperado, normalizando os tipos
|
||||||
return data.map((item: any) => ({
|
return data.map((item: any) => ({
|
||||||
id: item.id.toString(),
|
id: item.id.toString(),
|
||||||
user: item.usuario_id || '', // Alterado de user para usuario_id
|
user: item.usuario_id || '',
|
||||||
created_at: item.created_at,
|
created_at: item.created_at,
|
||||||
valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0),
|
valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0),
|
||||||
quando: item.quando || new Date().toISOString(),
|
quando: item.quando || new Date().toISOString(),
|
||||||
@ -49,6 +58,13 @@ export async function getTransactionSummary() {
|
|||||||
return { receitas: 0, despesas: 0, saldo: 0 };
|
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 tabelaTransacoes = `transacoes_${userId}`;
|
||||||
|
|
||||||
const { data, error } = await supabase
|
const { data, error } = await supabase
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user