diff --git a/kafka-ui-react-app/src/components/Topics/List/ListItem.tsx b/kafka-ui-react-app/src/components/Topics/List/ListItem.tsx index fa59db3405..7b065401a0 100644 --- a/kafka-ui-react-app/src/components/Topics/List/ListItem.tsx +++ b/kafka-ui-react-app/src/components/Topics/List/ListItem.tsx @@ -25,7 +25,14 @@ export interface ListItemProps { } const ListItem: React.FC = ({ - topic: { name, internal, partitions, segmentSize, replicationFactor }, + topic: { + name, + internal, + partitions, + segmentSize, + replicationFactor, + cleanUpPolicy, + }, selected, toggleTopicSelected, deleteTopic, @@ -105,9 +112,11 @@ const ListItem: React.FC = ({ {!internal && !isReadOnly && vElipsisVisble ? (
} right> - - Clear Messages - + {cleanUpPolicy === 'DELETE' && ( + + Clear Messages + + )} {isTopicDeletionAllowed && ( setDeleteTopicConfirmationVisible(true)} diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Details.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Details.tsx index fe98bcf000..f83c662762 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Details.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Details.tsx @@ -33,6 +33,7 @@ interface Props extends Topic, TopicDetails { topicName: TopicName; isInternal: boolean; isDeleted: boolean; + isDeletePolicy: boolean; deleteTopic: (clusterName: ClusterName, topicName: TopicName) => void; clearTopicMessages(clusterName: ClusterName, topicName: TopicName): void; } @@ -49,6 +50,7 @@ const Details: React.FC = ({ topicName, isInternal, isDeleted, + isDeletePolicy, deleteTopic, clearTopicMessages, }) => { @@ -103,12 +105,14 @@ const Details: React.FC = ({ > Edit settings - setClearTopicConfirmationVisible(true)} - danger - > - Clear messages - + {isDeletePolicy && ( + setClearTopicConfirmationVisible(true)} + danger + > + Clear messages + + )} {isTopicDeletionAllowed && ( setDeleteTopicConfirmationVisible(true)} diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/Overview.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/Overview.tsx index 7a967cc487..e6d11e30f0 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/Overview.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/Overview.tsx @@ -102,7 +102,7 @@ const Overview: React.FC = ({ {offsetMin} {offsetMax} - {!internal && !isReadOnly ? ( + {!internal && !isReadOnly && cleanUpPolicy === 'DELETE' ? ( } right> diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/__test__/Overview.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/__test__/Overview.spec.tsx index 1373e4880f..226f59b0cc 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/__test__/Overview.spec.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Overview/__test__/Overview.spec.tsx @@ -5,6 +5,7 @@ import Overview, { Props as OverviewProps, } from 'components/Topics/Topic/Details/Overview/Overview'; import theme from 'theme/theme'; +import { CleanUpPolicy } from 'generated-sources'; describe('Overview', () => { const mockClusterName = 'local'; @@ -49,6 +50,7 @@ describe('Overview', () => { internal: false, clusterName: mockClusterName, topicName: mockTopicName, + cleanUpPolicy: CleanUpPolicy.DELETE, clearTopicMessages: mockClearTopicMessages, }); expect(screen.getByRole('menu')).toBeInTheDocument(); diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/Details.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/Details.spec.tsx index 11fa6ab30d..a175b5c0b3 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/Details.spec.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/Details.spec.tsx @@ -37,6 +37,7 @@ describe('Details', () => { deleteTopic={mockDelete} clearTopicMessages={mockClearTopicMessages} isDeleted={false} + isDeletePolicy /> , { pathname } @@ -64,6 +65,7 @@ describe('Details', () => { deleteTopic={mockDelete} clearTopicMessages={mockClearTopicMessages} isDeleted={false} + isDeletePolicy /> diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/__snapshots__/Details.spec.tsx.snap b/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/__snapshots__/Details.spec.tsx.snap index 84e17d8d92..386777843e 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/__snapshots__/Details.spec.tsx.snap +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/__test__/__snapshots__/Details.spec.tsx.snap @@ -482,6 +482,7 @@ exports[`Details when it has readonly flag does not render the Action button a T clearTopicMessages={[MockFunction]} clusterName="local" deleteTopic={[MockFunction]} + isDeletePolicy={true} isDeleted={false} isInternal={true} name="__internal.topic"