Improve data reset flow

The settings page was reloading slowly after a data reset. This commit addresses the issue by preventing the unnecessary reload after the reset operation.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-18 02:07:27 +00:00
parent 00727c8ab6
commit 0be5154e02
4 changed files with 46 additions and 46 deletions

View File

@@ -103,35 +103,34 @@ export const resetAllStorageData = (): void => {
'syncEnabled', // 동기화 설정도 초기화
];
// 키 삭제
// 키 동시에 삭제 (성능 최적화)
keysToRemove.forEach(key => {
console.log(`삭제 중: ${key}`);
localStorage.removeItem(key);
localStorage.removeItem(`${key}_backup`); // 백업 키도 함께 삭제
});
// 백업 키도 삭제
keysToRemove.forEach(key => {
localStorage.removeItem(`${key}_backup`);
// 기본값으로 초기화 - 한번에 처리
const defaultData = {
transactions: JSON.stringify([]),
budgetData: JSON.stringify({
daily: {targetAmount: 0, spentAmount: 0, remainingAmount: 0},
weekly: {targetAmount: 0, spentAmount: 0, remainingAmount: 0},
monthly: {targetAmount: 0, spentAmount: 0, remainingAmount: 0}
}),
categoryBudgets: JSON.stringify({
식비: 0,
교통비: 0,
생활비: 0
})
};
// 모든 기본값 한번에 설정
Object.entries(defaultData).forEach(([key, value]) => {
localStorage.setItem(key, value);
localStorage.setItem(`${key}_backup`, value);
});
// 기본값으로 초기화
localStorage.setItem('transactions', JSON.stringify([]));
localStorage.setItem('budgetData', JSON.stringify({
daily: {targetAmount: 0, spentAmount: 0, remainingAmount: 0},
weekly: {targetAmount: 0, spentAmount: 0, remainingAmount: 0},
monthly: {targetAmount: 0, spentAmount: 0, remainingAmount: 0}
}));
localStorage.setItem('categoryBudgets', JSON.stringify({
식비: 0,
교통비: 0,
생활비: 0
}));
// 백업 생성
localStorage.setItem('transactions_backup', JSON.stringify([]));
localStorage.setItem('budgetData_backup', localStorage.getItem('budgetData') || '');
localStorage.setItem('categoryBudgets_backup', localStorage.getItem('categoryBudgets') || '');
// 사용자 설정 값 복원
if (dontShowWelcomeValue) {
localStorage.setItem('dontShowWelcome', dontShowWelcomeValue);
@@ -158,12 +157,16 @@ export const resetAllStorageData = (): void => {
localStorage.setItem('syncEnabled', 'false');
console.log('동기화 설정이 OFF로 변경되었습니다');
// 이벤트 발생
window.dispatchEvent(new Event('transactionUpdated'));
window.dispatchEvent(new Event('budgetDataUpdated'));
window.dispatchEvent(new Event('categoryBudgetsUpdated'));
window.dispatchEvent(new StorageEvent('storage'));
window.dispatchEvent(new Event('auth-state-changed')); // 동기화 상태 변경 이벤트 추가
// 모든 이벤트 한 번에 발생 (성능 최적화)
const events = [
new Event('transactionUpdated'),
new Event('budgetDataUpdated'),
new Event('categoryBudgetsUpdated'),
new StorageEvent('storage'),
new Event('auth-state-changed')
];
events.forEach(event => window.dispatchEvent(event));
console.log('모든 저장소 데이터가 완전히 초기화되었습니다. (동기화 설정이 OFF로 변경됨)');
} catch (error) {