Fix data initialization issue
The data initialization logic was not properly clearing existing data, leading to incorrect budget values. This commit ensures that all relevant data is cleared upon initialization.
This commit is contained in:
@@ -22,7 +22,8 @@ const Index = () => {
|
||||
setSelectedTab,
|
||||
handleBudgetGoalUpdate,
|
||||
updateTransaction,
|
||||
getCategorySpending
|
||||
getCategorySpending,
|
||||
resetBudgetData
|
||||
} = useBudget();
|
||||
|
||||
const { user } = useAuth();
|
||||
@@ -31,25 +32,65 @@ const Index = () => {
|
||||
|
||||
// 화면이 처음 로드될 때 데이터 초기화
|
||||
useEffect(() => {
|
||||
if (!isInitialized) {
|
||||
// 모든 데이터 완전히 삭제 및 초기화 (두 가지 초기화 함수 모두 반복 호출)
|
||||
resetAllData();
|
||||
resetAllStorageData();
|
||||
resetAllData(); // 한번 더 실행해서 확실히 지움
|
||||
// 초기화 함수 모음
|
||||
const initializeAllData = () => {
|
||||
console.log('모든 데이터 초기화 시작');
|
||||
|
||||
// localStorage 직접 초기화 (추가 보호)
|
||||
localStorage.removeItem('budget');
|
||||
localStorage.removeItem('budgetData');
|
||||
localStorage.removeItem('categoryBudgets');
|
||||
localStorage.removeItem('transactions');
|
||||
localStorage.removeItem('monthlyExpenses');
|
||||
localStorage.removeItem('monthlyData');
|
||||
// 여러번 초기화 실행
|
||||
for (let i = 0; i < 3; i++) {
|
||||
// 모든 데이터 완전히 삭제 및 초기화
|
||||
resetAllData();
|
||||
resetAllStorageData();
|
||||
|
||||
// localStorage 직접 초기화 (추가 보호)
|
||||
clearAllAnalyticsData();
|
||||
}
|
||||
|
||||
// 데이터를 비운 후 빈 값 저장
|
||||
localStorage.setItem('transactions', JSON.stringify([]));
|
||||
// 컨텍스트 데이터 리셋 (마지막에 한번 더)
|
||||
if (resetBudgetData) {
|
||||
resetBudgetData();
|
||||
}
|
||||
|
||||
setIsInitialized(true);
|
||||
console.log('모든 데이터 초기화 완료');
|
||||
return true;
|
||||
};
|
||||
|
||||
// 분석 페이지 데이터 초기화 함수
|
||||
const clearAllAnalyticsData = () => {
|
||||
// 분석 관련 데이터 강제 삭제
|
||||
const analyticsKeys = [
|
||||
'analytics', 'monthlyTotals', 'chartData',
|
||||
'expenseHistory', 'budgetHistory', 'categorySpending',
|
||||
'monthlyData', 'expenseData', 'analyticData'
|
||||
];
|
||||
|
||||
analyticsKeys.forEach(key => {
|
||||
localStorage.removeItem(key);
|
||||
});
|
||||
|
||||
// 모든 localStorage 순회하며 월간, 차트, 분석 관련 키워드 삭제
|
||||
for (let i = localStorage.length - 1; i >= 0; i--) {
|
||||
const key = localStorage.key(i);
|
||||
if (key && (
|
||||
key.includes('month') ||
|
||||
key.includes('chart') ||
|
||||
key.includes('analytics') ||
|
||||
key.includes('expense') ||
|
||||
key.includes('budget') ||
|
||||
key.includes('total')
|
||||
)) {
|
||||
console.log(`분석 데이터 삭제: ${key}`);
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
if (!isInitialized) {
|
||||
// 데이터 초기화 실행
|
||||
const result = initializeAllData();
|
||||
setIsInitialized(result);
|
||||
}
|
||||
|
||||
// 환영 다이얼로그 표시 여부 결정 (데이터 초기화 후)
|
||||
@@ -60,7 +101,7 @@ const Index = () => {
|
||||
|
||||
// 방문 기록 저장 (초기화 후에 저장)
|
||||
localStorage.setItem('hasVisitedBefore', 'true');
|
||||
}, [isInitialized]);
|
||||
}, [isInitialized, resetBudgetData]);
|
||||
|
||||
// 환영 팝업 닫기
|
||||
const handleCloseWelcome = (dontShowAgain: boolean) => {
|
||||
|
||||
Reference in New Issue
Block a user