import React from 'react'; import { ClusterName } from 'redux/interfaces'; import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb'; import { clusterConsumerGroupResetOffsetsPath, 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 ClusterContext from 'components/contexts/ClusterContext'; import ListItem from './ListItem'; export interface Props extends ConsumerGroup, ConsumerGroupDetails { clusterName: ClusterName; partitions?: ConsumerGroupTopicPartition[]; isFetched: boolean; isDeleted: boolean; fetchConsumerGroupDetails: ( clusterName: ClusterName, consumerGroupID: ConsumerGroupID ) => void; deleteConsumerGroup: (clusterName: string, id: ConsumerGroupID) => void; } const Details: React.FC = ({ clusterName, groupId, partitions, isFetched, isDeleted, fetchConsumerGroupDetails, deleteConsumerGroup, }) => { React.useEffect(() => { fetchConsumerGroupDetails(clusterName, groupId); }, [fetchConsumerGroupDetails, clusterName, groupId]); const items = partitions || []; const [isConfirmationModelVisible, setIsConfirmationModelVisible] = React.useState(false); const history = useHistory(); const { isReadOnly } = React.useContext(ClusterContext); const onDelete = () => { setIsConfirmationModelVisible(false); deleteConsumerGroup(clusterName, groupId); }; React.useEffect(() => { if (isDeleted) { history.push(clusterConsumerGroupsPath(clusterName)); } }, [isDeleted]); const onResetOffsets = () => { history.push(clusterConsumerGroupResetOffsetsPath(clusterName, groupId)); }; return (
{groupId}
{isFetched ? (
{!isReadOnly && (
)} {items.length === 0 && ( )} {items.map((consumer) => ( ))}
Consumer ID Host Topic Partition Messages behind Current offset End offset
No active consumer groups
) : ( )} setIsConfirmationModelVisible(false)} onConfirm={onDelete} > Are you sure you want to delete this consumer group?
); }; export default Details;