날짜 형식 처리 안정성 강화 및 트랜잭션 삭제 시 앱 먹통 문제 해결

This commit is contained in:
hansoo
2025-03-18 01:07:17 +09:00
parent 6f91afeebe
commit acb9ae3d70
23 changed files with 732 additions and 18 deletions

View File

@@ -31,15 +31,39 @@ export const downloadTransactions = async (userId: string): Promise<void> => {
console.log(`서버에서 ${data.length}개의 트랜잭션 다운로드`);
// 서버 데이터를 로컬 형식으로 변환
const serverTransactions = data.map(t => ({
id: t.transaction_id || t.id,
title: t.title,
amount: t.amount,
date: t.date ? formatDateForDisplay(t.date) : '날짜 없음',
category: t.category,
type: t.type,
notes: t.notes
}));
const serverTransactions = data.map(t => {
// 날짜 형식 변환 시 오류 방지 처리
let formattedDate = '날짜 없음';
try {
if (t.date) {
// ISO 형식이 아닌 경우 기본 변환 수행
if (!t.date.match(/^\d{4}-\d{2}-\d{2}T/)) {
console.log(`비표준 날짜 형식 감지: ${t.date}, ID: ${t.transaction_id || t.id}`);
// 유효한 Date 객체로 변환 가능한지 확인
const testDate = new Date(t.date);
if (isNaN(testDate.getTime())) {
console.warn(`잘못된 날짜 형식 감지, 현재 날짜 사용: ${t.date}`);
t.date = new Date().toISOString(); // 잘못된 날짜는 현재 날짜로 대체
}
}
formattedDate = formatDateForDisplay(t.date);
}
} catch (err) {
console.error(`날짜 변환 오류 (ID: ${t.transaction_id || t.id}):`, err);
// 오류 발생 시 기본값 사용
formattedDate = new Date().toLocaleString('ko-KR');
}
return {
id: t.transaction_id || t.id,
title: t.title,
amount: t.amount,
date: formattedDate,
category: t.category,
type: t.type,
notes: t.notes
};
});
// 기존 로컬 데이터 불러오기
const localDataStr = localStorage.getItem('transactions');