import React from 'react'; import cx from 'classnames'; import { NavLink } from 'react-router-dom'; import { ClusterName, TopicName, TopicWithDetailedInfo, } from 'redux/interfaces'; interface ListItemProps { topic: TopicWithDetailedInfo; deleteTopic: (clusterName: ClusterName, topicName: TopicName) => void; clusterName: ClusterName; } const ListItem: React.FC = ({ topic: { name, internal, partitions }, deleteTopic, clusterName, }) => { const outOfSyncReplicas = React.useMemo(() => { if (partitions === undefined || partitions.length === 0) { return 0; } return partitions.reduce((memo: number, { replicas }) => { const outOfSync = replicas?.filter(({ inSync }) => !inSync); return memo + (outOfSync?.length || 0); }, 0); }, [partitions]); const deleteTopicHandler = React.useCallback(() => { deleteTopic(clusterName, name); }, [clusterName, name]); return ( {name} {partitions?.length} {outOfSyncReplicas}
{internal ? 'Internal' : 'External'}
); }; export default ListItem;