import React, { useEffect, useState } from 'react';
import useDeepCompareEffect from 'use-deep-compare-effect';
import { useParams } from 'react-router-dom';
import { shallowEqual, useSelector, useDispatch } from 'react-redux';
import { STATUS } from 'foremanReact/constants';
import { Grid, GridItem } from '@patternfly/react-core';
import PropTypes from 'prop-types';
import {
selectCVFilterDetails,
selectCVFilterDetailStatus,
} from '../ContentViewDetailSelectors';
import { getCVFilterDetails, getContentViewFilters } from '../ContentViewDetailActions';
import ContentViewFilterDetailsHeader from './ContentViewFilterDetailsHeader';
import CVFilterDetailType from './CVFilterDetailType';
import Loading from '../../../../components/Loading';
const ContentViewFilterDetails = ({ cvId, details }) => {
const { filterId } = useParams();
const dispatch = useDispatch();
const [filterDetails, setFilterDetails] = useState({});
const [showAffectedRepos, setShowAffectedRepos] = useState(false);
const response = useSelector(state => selectCVFilterDetails(state, cvId, filterId), shallowEqual);
const status = useSelector(state =>
selectCVFilterDetailStatus(state, cvId, filterId), shallowEqual);
const loaded = status === STATUS.RESOLVED;
const loading = status === STATUS.PENDING;
useEffect(() => {
dispatch(getCVFilterDetails(cvId, filterId));
dispatch(getContentViewFilters(cvId));
}, [dispatch, cvId, filterId]);
useDeepCompareEffect(() => {
if (loaded) {
setFilterDetails(response);
const { repositories } = response;
if (repositories.length) {
setShowAffectedRepos(true);
}
}
}, [response, loaded]);
const { type, inclusion, rules } = filterDetails;
if (loading) {
return ;
}
return (
{loaded && (Object.keys(filterDetails).length > 0) ?
:
}
);
};
ContentViewFilterDetails.propTypes = {
cvId: PropTypes.number.isRequired,
details: PropTypes.shape({
permissions: PropTypes.shape({}),
}).isRequired,
};
export default ContentViewFilterDetails;