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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user