
import { BudgetPeriod } from '../types';

/**
 * 예산 목표 업데이트 확장 함수를 제공하는 훅
 * 예산 목표 업데이트와 카테고리 예산 업데이트를 통합합니다.
 */
export const useExtendedBudgetUpdate = (
  handleBudgetUpdate: (type: BudgetPeriod, amount: number) => void,
  setCategoryBudgets: (budgets: Record<string, number>) => void
) => {
  // 예산 목표 업데이트 확장 함수
  const extendedBudgetUpdate = (
    type: BudgetPeriod, 
    amount: number, 
    newCategoryBudgets?: Record<string, number>
  ) => {
    console.log('확장 예산 업데이트 시작:', type, amount, newCategoryBudgets);
    
    // 타입에 상관없이 항상 월간으로 처리
    console.log(`예산 업데이트: 입력 금액=${amount}, 항상 월간으로 설정`);
    handleBudgetUpdate('monthly', amount);
    
    // 카테고리 예산 업데이트 (제공된 경우)
    if (newCategoryBudgets) {
      console.log('카테고리 예산 업데이트:', newCategoryBudgets);
      setCategoryBudgets(newCategoryBudgets);
      
      // 카테고리 예산 업데이트 이벤트 발생
      setTimeout(() => {
        window.dispatchEvent(new Event('categoryBudgetsUpdated'));
      }, 100);
    }
    
    // 모든 업데이트가 완료된 후 전역 예산 데이터 업데이트 이벤트 발생
    setTimeout(() => {
      window.dispatchEvent(new Event('budgetDataUpdated'));
    }, 200);
  };

  return extendedBudgetUpdate;
};
