Fix transaction deletion issue

Addresses the issue where the transaction history page becomes unresponsive after deleting a transaction.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-17 23:37:06 +00:00
parent d48b866b3a
commit 783dd9ce99
6 changed files with 121 additions and 92 deletions

View File

@@ -19,6 +19,7 @@ const Transactions = () => {
handleNextMonth,
refreshTransactions,
totalExpenses,
deleteTransaction
} = useTransactions();
const { budgetData } = useBudget();
@@ -32,25 +33,36 @@ const Transactions = () => {
}
}, [budgetData, isLoading]);
// 트랜잭션 삭제 핸들러 (예외 처리 개선)
const handleTransactionDelete = (id: string) => {
// 트랜잭션 삭제 핸들러 (오류 수정)
const handleTransactionDelete = async (id: string) => {
try {
console.log('Transactions 페이지에서 트랜잭션 삭제:', id);
// 삭제 중임을 표시
setIsProcessing(true);
// 1초 후 처리 완료 상태로 변경 (비동기 작업 완료 보장)
// 트랜잭션 삭제 수행 (개선된 함수 사용)
const success = await deleteTransaction(id);
// 일정 시간 후 처리 상태 해제 (UI 응답성 향상)
setTimeout(() => {
setIsProcessing(false);
}, 1000);
// 트랜잭션 목록 새로고침 (지연시켜 처리)
setTimeout(() => {
refreshTransactions();
}, 300);
// 삭제 성공 시 데이터 새로고침
if (success) {
setTimeout(() => {
refreshTransactions();
}, 300);
}
}, 800);
} catch (error) {
console.error('트랜잭션 삭제 처리 중 오류:', error);
setIsProcessing(false);
// 삭제 실패 시에도 데이터 새로고침 (안정성 향상)
setTimeout(() => {
refreshTransactions();
}, 500);
}
};
@@ -82,6 +94,8 @@ const Transactions = () => {
const grouped: Record<string, Transaction[]> = {};
transactions.forEach(transaction => {
if (!transaction.date) return;
const datePart = transaction.date.split(',')[0];
if (!grouped[datePart]) {
grouped[datePart] = [];