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,
};
};