
import { useCallback } from 'react';
import { FilteringProps, FilteringReturn } from './types';
import { useMonthSelection } from './useMonthSelection';
import { useFilterApplication } from './useFilterApplication';
import { useTotalCalculation } from './useTotalCalculation';

/**
 * 트랜잭션 필터링 관련 기능을 통합한 훅
 */
export const useTransactionsFiltering = ({
  transactions,
  selectedMonth,
  setSelectedMonth,
  searchQuery,
  setFilteredTransactions
}: FilteringProps): FilteringReturn => {
  // 월 선택 관련 기능
  const { handlePrevMonth, handleNextMonth } = useMonthSelection({
    selectedMonth,
    setSelectedMonth
  });

  // 필터 적용 관련 기능
  const { filterTransactions } = useFilterApplication({
    transactions,
    selectedMonth,
    searchQuery,
    setFilteredTransactions
  });

  // 총 지출 계산 관련 기능
  const { getTotalExpenses } = useTotalCalculation();

  // 강제 필터링 실행 함수 (외부에서 호출 가능)
  const forceRefresh = useCallback(() => {
    console.log('필터 강제 새로고침');
    filterTransactions();
  }, [filterTransactions]);

  return {
    handlePrevMonth,
    handleNextMonth,
    getTotalExpenses,
    forceRefresh
  };
};
