Investigate data initialization issue

Investigates and addresses a potential data loss issue where budget data is unexpectedly reset when navigating between pages.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-16 07:23:16 +00:00
parent d59fb97f7c
commit 7c8e542912
3 changed files with 78 additions and 48 deletions

View File

@@ -29,7 +29,7 @@ const Index = () => {
const { isInitialized } = useDataInitialization(resetBudgetData);
const isMobile = useIsMobile();
// 초기화 후 0.5초 후에 환영 메시지 표시 상태 확인
// 초기화 후 환영 메시지 표시 상태 확인
useEffect(() => {
if (isInitialized) {
const timeoutId = setTimeout(checkWelcomeDialogState, 500);
@@ -39,12 +39,11 @@ const Index = () => {
// 페이지가 처음 로드될 때 데이터 로딩 확인
useEffect(() => {
// 데이터 로드 상태 확인
console.log('Index 페이지 마운트, 현재 데이터 상태:');
console.log('트랜잭션:', transactions.length);
console.log('예산 데이터:', budgetData);
// 수동으로 이벤트 발생시켜 데이터 갱신
// 페이지 마운트 시 데이터 동기화 이벤트 수동 발생
try {
window.dispatchEvent(new Event('transactionUpdated'));
window.dispatchEvent(new Event('budgetDataUpdated'));
@@ -53,34 +52,38 @@ const Index = () => {
console.error('이벤트 발생 오류:', e);
}
// 백업된 데이터 복구 확인
// 백업된 데이터 복구 확인 (메인 데이터가 없는 경우만)
try {
const budgetBackup = localStorage.getItem('budgetData_backup');
const categoryBackup = localStorage.getItem('categoryBudgets_backup');
const transactionBackup = localStorage.getItem('transactions_backup');
// 메인 데이터가 없지만 백업은 있는 경우 복구
if (!localStorage.getItem('budgetData') && budgetBackup) {
console.log('예산 데이터 백업에서 복구');
localStorage.setItem('budgetData', budgetBackup);
window.dispatchEvent(new Event('budgetDataUpdated'));
if (!localStorage.getItem('budgetData')) {
const budgetBackup = localStorage.getItem('budgetData_backup');
if (budgetBackup) {
console.log('예산 데이터 백업에서 복구');
localStorage.setItem('budgetData', budgetBackup);
window.dispatchEvent(new Event('budgetDataUpdated'));
}
}
if (!localStorage.getItem('categoryBudgets') && categoryBackup) {
console.log('카테고리 예산 백업에서 복구');
localStorage.setItem('categoryBudgets', categoryBackup);
window.dispatchEvent(new Event('categoryBudgetsUpdated'));
if (!localStorage.getItem('categoryBudgets')) {
const categoryBackup = localStorage.getItem('categoryBudgets_backup');
if (categoryBackup) {
console.log('카테고리 예산 백업에서 복구');
localStorage.setItem('categoryBudgets', categoryBackup);
window.dispatchEvent(new Event('categoryBudgetsUpdated'));
}
}
if (!localStorage.getItem('transactions') && transactionBackup) {
console.log('트랜잭션 백업에서 복구');
localStorage.setItem('transactions', transactionBackup);
window.dispatchEvent(new Event('transactionUpdated'));
if (!localStorage.getItem('transactions')) {
const transactionBackup = localStorage.getItem('transactions_backup');
if (transactionBackup) {
console.log('트랜잭션 백업에서 복구');
localStorage.setItem('transactions', transactionBackup);
window.dispatchEvent(new Event('transactionUpdated'));
}
}
} catch (error) {
console.error('백업 복구 시도 중 오류:', error);
}
}, []);
}, [transactions.length, budgetData]);
// 앱이 포커스를 얻었을 때 데이터를 새로고침
useEffect(() => {