diff --git a/src/contexts/BudgetContext.tsx b/src/contexts/BudgetContext.tsx index 70c8a6a..50f3088 100644 --- a/src/contexts/BudgetContext.tsx +++ b/src/contexts/BudgetContext.tsx @@ -1,3 +1,4 @@ + import React, { createContext, useState, useContext, useEffect } from 'react'; import { BudgetContextType, BudgetData, BudgetPeriod, Transaction, CategoryBudget } from './budget/types'; import { loadTransactionsFromStorage, saveTransactionsToStorage } from '@/hooks/transactions/storageUtils'; @@ -118,6 +119,16 @@ export const BudgetProvider: React.FC<{ children: React.ReactNode }> = ({ childr return result; }; + + // 예산 데이터 재설정 함수 추가 + const resetBudgetData = () => { + setBudgetData({ + daily: { targetAmount: 0, spentAmount: 0, remainingAmount: 0 }, + weekly: { targetAmount: 0, spentAmount: 0, remainingAmount: 0 }, + monthly: { targetAmount: 0, spentAmount: 0, remainingAmount: 0 }, + }); + setCategoryBudgets({}); + }; return ( = ({ childr budgetData, selectedTab, setSelectedTab, + addTransaction, updateTransaction, + deleteTransaction, handleBudgetGoalUpdate, getCategorySpending, - getPaymentMethodStats, // 추가된 메서드 - addTransaction, - deleteTransaction, + getPaymentMethodStats, + resetBudgetData, }}> {children} @@ -146,3 +158,8 @@ export const useBudget = () => { } return context; }; + +// types 내보내기 +export type { BudgetContextType }; +export { BudgetPeriod } from './budget/types'; +export type { Transaction } from './budget/types'; diff --git a/src/contexts/budget/BudgetContext.tsx b/src/contexts/budget/BudgetContext.tsx index 468e681..440ea3e 100644 --- a/src/contexts/budget/BudgetContext.tsx +++ b/src/contexts/budget/BudgetContext.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { useBudgetState } from './useBudgetState'; import { BudgetContext, BudgetContextType } from './useBudget'; -import { BudgetPeriod } from './types'; +import { BudgetPeriod, Transaction } from './types'; // 컨텍스트 프로바이더 컴포넌트 export const BudgetProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { @@ -19,4 +19,5 @@ export const BudgetProvider: React.FC<{ children: React.ReactNode }> = ({ childr export { useBudget } from './useBudget'; export type { BudgetContextType } from './useBudget'; -export type { BudgetPeriod } from './types'; +// types.ts에서 타입들을 export +export { BudgetPeriod, Transaction } from './types'; diff --git a/src/contexts/budget/types.ts b/src/contexts/budget/types.ts index 13a257d..c6c5da2 100644 --- a/src/contexts/budget/types.ts +++ b/src/contexts/budget/types.ts @@ -27,10 +27,13 @@ export interface BudgetContextType { budgetData: BudgetData; selectedTab: BudgetPeriod; setSelectedTab: (tab: BudgetPeriod) => void; + addTransaction: (transaction: Transaction) => void; updateTransaction: (updatedTransaction: Transaction) => void; + deleteTransaction: (id: string) => void; handleBudgetGoalUpdate: (type: BudgetPeriod, amount: number, newCategoryBudgets?: Record) => void; getCategorySpending: () => CategoryBudget[]; getPaymentMethodStats: () => { method: string; amount: number; percentage: number }[]; + resetBudgetData?: () => void; // 선택적 필드로 유지 } // Transaction 타입 (기존 TransactionCard에서 가져옴) diff --git a/src/contexts/budget/useBudget.ts b/src/contexts/budget/useBudget.ts index 77affb4..37001c2 100644 --- a/src/contexts/budget/useBudget.ts +++ b/src/contexts/budget/useBudget.ts @@ -1,3 +1,4 @@ + import { useContext, createContext } from 'react'; import { BudgetData, BudgetPeriod, Transaction } from './types'; @@ -17,6 +18,7 @@ export interface BudgetContextType { updateTransaction: (transaction: Transaction) => void; deleteTransaction: (id: string) => void; handleBudgetGoalUpdate: (type: BudgetPeriod, amount: number, newCategoryBudgets?: Record) => void; + getPaymentMethodStats: () => Array<{ method: string; amount: number; percentage: number }>; resetBudgetData?: () => void; // 선택적 필드로 추가 } diff --git a/src/hooks/transactions/storageUtils.ts b/src/hooks/transactions/storageUtils.ts index 5b29c6d..dba0801 100644 --- a/src/hooks/transactions/storageUtils.ts +++ b/src/hooks/transactions/storageUtils.ts @@ -1,5 +1,5 @@ -import { Transaction } from '@/components/TransactionCard'; +import { Transaction } from '@/contexts/budget/types'; import { toast } from '@/hooks/useToast.wrapper'; import { EXPENSE_CATEGORIES } from '@/constants/categoryIcons'; diff --git a/src/hooks/transactions/transactionOperations/index.ts b/src/hooks/transactions/transactionOperations/index.ts index 88da529..67d3d65 100644 --- a/src/hooks/transactions/transactionOperations/index.ts +++ b/src/hooks/transactions/transactionOperations/index.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; -import { Transaction } from '@/components/TransactionCard'; +import { Transaction } from '@/contexts/budget/types'; import { useBudget } from '@/contexts/BudgetContext'; export const useTransactionsOperations = (transactions: Transaction[]) => { diff --git a/src/hooks/transactions/transactionOperations/useTransactionsOperations.ts b/src/hooks/transactions/transactionOperations/useTransactionsOperations.ts index ef7a682..bc7bc58 100644 --- a/src/hooks/transactions/transactionOperations/useTransactionsOperations.ts +++ b/src/hooks/transactions/transactionOperations/useTransactionsOperations.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; -import { Transaction } from '@/components/TransactionCard'; +import { Transaction } from '@/contexts/budget/types'; import { useBudget } from '@/contexts/BudgetContext'; export const useTransactionsOperations = (transactions: Transaction[]) => {