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:
gpt-engineer-app[bot]
2025-04-05 05:48:21 +00:00
parent d96a43ef44
commit 03e9671ec6
5 changed files with 33 additions and 6 deletions

View File

@@ -56,6 +56,8 @@ export const resetAllData = (): void => {
const initialBudgetData = getInitialBudgetData();
localStorage.setItem('budgetData', JSON.stringify(initialBudgetData));
localStorage.setItem('categoryBudgets', JSON.stringify(DEFAULT_CATEGORY_BUDGETS));
// 중요: 트랜잭션은 반드시 빈 배열로 설정
localStorage.setItem('transactions', JSON.stringify([]));
// 중요: budgetData_backup도 설정하여 복구 가능하게 함

View File

@@ -98,6 +98,7 @@ export const saveTransactionsToStorage = (transactions: Transaction[]): void =>
*/
export const clearAllTransactions = (): void => {
try {
// 기존 키 완전 삭제
localStorage.removeItem('transactions');
localStorage.removeItem('transactions_backup');
@@ -106,6 +107,16 @@ export const clearAllTransactions = (): void => {
localStorage.setItem('transactions', 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('모든 트랜잭션이 삭제되었습니다.');
// 스토리지 이벤트 수동 트리거

View File

@@ -78,9 +78,18 @@ export const useDataReset = () => {
}
}
// 데이터 초기화
// 데이터 초기화 (개선된 메소드 사용)
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) {
localStorage.setItem('dontShowWelcome', dontShowWelcomeValue);
@@ -139,8 +148,10 @@ export const useDataReset = () => {
console.log('모든 데이터 초기화 완료');
// 페이지 리프레시 대신 navigate 사용 (딜레이 제거)
navigate('/settings', { replace: true });
// 페이지 리프레시를 위해 잠시 후에 새로고침
setTimeout(() => {
window.location.reload();
}, 500);
return { isCloudResetSuccess: cloudResetSuccess };
} catch (error) {

View File

@@ -26,9 +26,8 @@ export const formatWithCommas = (value: string): string => {
return addCommas(removeCommas(value));
};
// 지출 비율 계산 함수 추가
// 지출 비율 계산 함수 - 100% 제한 제거
export const calculatePercentage = (spent: number, target: number): number => {
if (target === 0) return 0;
return Math.min(Math.round((spent / target) * 100), 100);
return Math.round((spent / target) * 100); // 제한 제거 - 100%를 초과할 수 있음
};

View File

@@ -103,6 +103,10 @@ export const resetAllStorageData = (): void => {
console.log('[스토리지 초기화] 카테고리 예산 백업 삭제됨');
}
// 중요: 트랜잭션 및 빈 배열로 초기화하여 확실하게 비움
localStorage.setItem('transactions', JSON.stringify([]));
localStorage.setItem('transactions_backup', JSON.stringify([]));
console.log('[스토리지 초기화] 완료');
} catch (error) {
console.error('[스토리지 초기화] 오류:', error);