Загрузка данных


import { auditRoute } from '@/app/router/routes/audit';
import { useGetApiV1MessageQuery } from '@/shared/api/audit/client';
import { useCallback, useMemo, useState } from 'react';
import { useAdditionalFilters } from './useAdditionalFilters';
import { useAuditOptions } from './useAuditOptions';
import { useBaseFilters } from './useBaseFilters';
import { useSearchUpdater } from './useSearchUpdater';
import { useSmartRoomIdFilter } from './useSmartRoomIdFilter';

export const useAuditSideFilter = () => {
  const searchParams = auditRoute.useSearch();

  const messageSearchParams = useMemo(() => {
    const {
      regionId,
      cityId,
      placeId,
      floorId,
      roomId,
      treeId,
      typeCall,
      ...params
    } = searchParams;

    return searchParams.locationIds.length
      ? params
      : { ...params, locationIds: undefined };
  }, [searchParams]);

  const { refetch } = useGetApiV1MessageQuery(messageSearchParams);

  const {
    updateSearchParams,
    updateParamAndResetPage,
    updateParamsAndResetPage,
  } = useSearchUpdater();

  const [isEquipmentFiltersOpen, setIsEquipmentFiltersOpen] = useState(false);

  const auditOptions = useAuditOptions(searchParams);

  const smartRoomFilter = useSmartRoomIdFilter({
    initialValue: searchParams.smartroomId,
    updateParamAndResetPage,
  });

  const additionalFilters = useAdditionalFilters({
    searchParams,
    updateParamAndResetPage,
    updateParamsAndResetPage,
  });

  const baseFilters = useBaseFilters({
    refetch,
    updateSearchParams,
    updateParamAndResetPage,
    updateParamsAndResetPage,
    resetSmartRoomId: smartRoomFilter.resetSmartRoomId,
    resetAdditionalFilters: additionalFilters.resetAdditionalFilters,
  });

  const handleEquipmentFiltersToggle = useCallback(() => {
    setIsEquipmentFiltersOpen((prev) => !prev);
  }, []);

  return {
    searchParams,
    isEquipmentFiltersOpen,

    auditOptions: { ...auditOptions },
    smartRoomFilter: { ...smartRoomFilter },
    additionalFilters: { ...additionalFilters },
    baseFilters: { ...baseFilters },

    handleEquipmentFiltersToggle,
  };
};