Fix data loss on sync enable

Addresses an issue where budget data was lost when enabling sync after entering budget information.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-18 01:14:32 +00:00
parent a6ca34e049
commit da282cff5a
3 changed files with 268 additions and 68 deletions

View File

@@ -67,12 +67,49 @@ export const useSyncSettings = () => {
return;
}
// 현재 로컬 데이터 백업
const budgetDataBackup = localStorage.getItem('budgetData');
const categoryBudgetsBackup = localStorage.getItem('categoryBudgets');
const transactionsBackup = localStorage.getItem('transactions');
console.log('동기화 설정 변경 전 로컬 데이터 백업:', {
budgetData: budgetDataBackup ? '있음' : '없음',
categoryBudgets: categoryBudgetsBackup ? '있음' : '없음',
transactions: transactionsBackup ? '있음' : '없음'
});
setEnabled(checked);
setSyncEnabled(checked);
if (checked && user) {
// 동기화 활성화 시 즉시 동기화 실행
await performSync();
try {
// 동기화 활성화 시 즉시 동기화 실행
await performSync();
} catch (error) {
console.error('동기화 중 오류, 로컬 데이터 복원 시도:', error);
// 오류 발생 시 백업 데이터 복원
if (budgetDataBackup) {
localStorage.setItem('budgetData', budgetDataBackup);
}
if (categoryBudgetsBackup) {
localStorage.setItem('categoryBudgets', categoryBudgetsBackup);
}
if (transactionsBackup) {
localStorage.setItem('transactions', transactionsBackup);
}
// 이벤트 발생시켜 UI 업데이트
window.dispatchEvent(new Event('budgetDataUpdated'));
window.dispatchEvent(new Event('categoryBudgetsUpdated'));
window.dispatchEvent(new Event('transactionUpdated'));
toast({
title: "동기화 오류",
description: "동기화 중 문제가 발생하여 로컬 데이터가 복원되었습니다.",
variant: "destructive"
});
}
}
};