import React from 'react'; import { ClusterName } from 'redux/interfaces'; import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb'; import { clusterConsumerGroupsPath } from 'lib/paths'; import { ConsumerGroupID } from 'redux/interfaces/consumerGroup'; import { ConsumerGroup, ConsumerGroupDetails, ConsumerGroupTopicPartition, } from 'generated-sources'; import PageLoader from 'components/common/PageLoader/PageLoader'; import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationModal'; import { useHistory } from 'react-router'; import ListItem from './ListItem'; export interface Props extends ConsumerGroup, ConsumerGroupDetails { clusterName: ClusterName; consumers?: ConsumerGroupTopicPartition[]; isFetched: boolean; isDeleted: boolean; fetchConsumerGroupDetails: ( clusterName: ClusterName, consumerGroupID: ConsumerGroupID ) => void; deleteConsumerGroup: (clusterName: string, id: ConsumerGroupID) => void; } const Details: React.FC = ({ clusterName, groupId, consumers, isFetched, isDeleted, fetchConsumerGroupDetails, deleteConsumerGroup, }) => { React.useEffect(() => { fetchConsumerGroupDetails(clusterName, groupId); }, [fetchConsumerGroupDetails, clusterName, groupId]); const items = consumers || []; const [isConfirmationModelVisible, setIsConfirmationModelVisible] = React.useState(false); const history = useHistory(); const onDelete = () => { setIsConfirmationModelVisible(false); deleteConsumerGroup(clusterName, groupId); }; React.useEffect(() => { if (isDeleted) { history.push(clusterConsumerGroupsPath(clusterName)); } }, [isDeleted]); return (
{groupId}
{isFetched ? (
{items.map((consumer) => ( ))}
Consumer ID Host Topic Partition Messages behind Current offset End offset
) : ( )} setIsConfirmationModelVisible(false)} onConfirm={onDelete} > Are you sure you want to delete this consumer group?
); }; export default Details;