Fix: Data reset not clearing transactions
Ensures that the data reset function correctly clears all transaction data from local storage.
This commit is contained in:
@@ -56,6 +56,8 @@ export const resetAllData = (): void => {
|
|||||||
const initialBudgetData = getInitialBudgetData();
|
const initialBudgetData = getInitialBudgetData();
|
||||||
localStorage.setItem('budgetData', JSON.stringify(initialBudgetData));
|
localStorage.setItem('budgetData', JSON.stringify(initialBudgetData));
|
||||||
localStorage.setItem('categoryBudgets', JSON.stringify(DEFAULT_CATEGORY_BUDGETS));
|
localStorage.setItem('categoryBudgets', JSON.stringify(DEFAULT_CATEGORY_BUDGETS));
|
||||||
|
|
||||||
|
// 중요: 트랜잭션은 반드시 빈 배열로 설정
|
||||||
localStorage.setItem('transactions', JSON.stringify([]));
|
localStorage.setItem('transactions', JSON.stringify([]));
|
||||||
|
|
||||||
// 중요: budgetData_backup도 설정하여 복구 가능하게 함
|
// 중요: budgetData_backup도 설정하여 복구 가능하게 함
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ export const saveTransactionsToStorage = (transactions: Transaction[]): void =>
|
|||||||
*/
|
*/
|
||||||
export const clearAllTransactions = (): void => {
|
export const clearAllTransactions = (): void => {
|
||||||
try {
|
try {
|
||||||
|
// 기존 키 완전 삭제
|
||||||
localStorage.removeItem('transactions');
|
localStorage.removeItem('transactions');
|
||||||
localStorage.removeItem('transactions_backup');
|
localStorage.removeItem('transactions_backup');
|
||||||
|
|
||||||
@@ -106,6 +107,16 @@ export const clearAllTransactions = (): void => {
|
|||||||
localStorage.setItem('transactions', emptyData);
|
localStorage.setItem('transactions', emptyData);
|
||||||
localStorage.setItem('transactions_backup', emptyData);
|
localStorage.setItem('transactions_backup', emptyData);
|
||||||
|
|
||||||
|
// 관련 백업 데이터도 모두 초기화
|
||||||
|
const transactionKeys = Object.keys(localStorage).filter(key =>
|
||||||
|
key.includes('transaction') || key.includes('expense') || key.includes('spending')
|
||||||
|
);
|
||||||
|
|
||||||
|
transactionKeys.forEach(key => {
|
||||||
|
localStorage.removeItem(key);
|
||||||
|
console.log(`관련 트랜잭션 데이터 삭제: ${key}`);
|
||||||
|
});
|
||||||
|
|
||||||
console.log('모든 트랜잭션이 삭제되었습니다.');
|
console.log('모든 트랜잭션이 삭제되었습니다.');
|
||||||
|
|
||||||
// 스토리지 이벤트 수동 트리거
|
// 스토리지 이벤트 수동 트리거
|
||||||
|
|||||||
@@ -78,9 +78,18 @@ export const useDataReset = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 데이터 초기화
|
// 데이터 초기화 (개선된 메소드 사용)
|
||||||
resetAllStorageData();
|
resetAllStorageData();
|
||||||
|
|
||||||
|
// 추가 초기화를 위해 빈 데이터 명시적 설정
|
||||||
|
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({}));
|
||||||
|
|
||||||
// 사용자 설정 복원
|
// 사용자 설정 복원
|
||||||
if (dontShowWelcomeValue) {
|
if (dontShowWelcomeValue) {
|
||||||
localStorage.setItem('dontShowWelcome', dontShowWelcomeValue);
|
localStorage.setItem('dontShowWelcome', dontShowWelcomeValue);
|
||||||
@@ -139,8 +148,10 @@ export const useDataReset = () => {
|
|||||||
|
|
||||||
console.log('모든 데이터 초기화 완료');
|
console.log('모든 데이터 초기화 완료');
|
||||||
|
|
||||||
// 페이지 리프레시 대신 navigate 사용 (딜레이 제거)
|
// 페이지 리프레시를 위해 잠시 후에 새로고침
|
||||||
navigate('/settings', { replace: true });
|
setTimeout(() => {
|
||||||
|
window.location.reload();
|
||||||
|
}, 500);
|
||||||
|
|
||||||
return { isCloudResetSuccess: cloudResetSuccess };
|
return { isCloudResetSuccess: cloudResetSuccess };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -26,9 +26,8 @@ export const formatWithCommas = (value: string): string => {
|
|||||||
return addCommas(removeCommas(value));
|
return addCommas(removeCommas(value));
|
||||||
};
|
};
|
||||||
|
|
||||||
// 지출 비율 계산 함수 추가
|
// 지출 비율 계산 함수 - 100% 제한 제거
|
||||||
export const calculatePercentage = (spent: number, target: number): number => {
|
export const calculatePercentage = (spent: number, target: number): number => {
|
||||||
if (target === 0) return 0;
|
if (target === 0) return 0;
|
||||||
return Math.min(Math.round((spent / target) * 100), 100);
|
return Math.round((spent / target) * 100); // 제한 제거 - 100%를 초과할 수 있음
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,10 @@ export const resetAllStorageData = (): void => {
|
|||||||
console.log('[스토리지 초기화] 카테고리 예산 백업 삭제됨');
|
console.log('[스토리지 초기화] 카테고리 예산 백업 삭제됨');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 중요: 트랜잭션 및 빈 배열로 초기화하여 확실하게 비움
|
||||||
|
localStorage.setItem('transactions', JSON.stringify([]));
|
||||||
|
localStorage.setItem('transactions_backup', JSON.stringify([]));
|
||||||
|
|
||||||
console.log('[스토리지 초기화] 완료');
|
console.log('[스토리지 초기화] 완료');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[스토리지 초기화] 오류:', error);
|
console.error('[스토리지 초기화] 오류:', error);
|
||||||
|
|||||||
Reference in New Issue
Block a user