11import React , { Suspense } from 'react' ;
22import { NavLink , Route , Routes , useNavigate } from 'react-router-dom' ;
33import {
4+ clusterTopicConnectorsRelativePath ,
45 clusterTopicConsumerGroupsRelativePath ,
56 clusterTopicEditRelativePath ,
67 clusterTopicMessagesRelativePath ,
@@ -22,6 +23,7 @@ import {
2223 useClearTopicMessages ,
2324 useDeleteTopic ,
2425 useRecreateTopic ,
26+ useTopicConnectors ,
2527 useTopicDetails ,
2628} from 'lib/hooks/api/topics' ;
2729import {
@@ -43,6 +45,7 @@ import Settings from './Settings/Settings';
4345import TopicConsumerGroups from './ConsumerGroups/TopicConsumerGroups' ;
4446import Statistics from './Statistics/Statistics' ;
4547import Edit from './Edit/Edit' ;
48+ import Connectors from './Connectors/Connectors' ;
4649import SendMessage from './SendMessage/SendMessage' ;
4750
4851const Topic : React . FC = ( ) => {
@@ -70,6 +73,10 @@ const Topic: React.FC = () => {
7073 const deleteTopic = useDeleteTopic ( clusterName ) ;
7174 const recreateTopic = useRecreateTopic ( { clusterName, topicName } ) ;
7275 const { data } = useTopicDetails ( { clusterName, topicName } ) ;
76+ const { data : connectors = [ ] } = useTopicConnectors ( {
77+ clusterName,
78+ topicName,
79+ } ) ;
7380
7481 const { isReadOnly, isTopicDeletionAllowed } =
7582 React . useContext ( ClusterContext ) ;
@@ -84,6 +91,7 @@ const Topic: React.FC = () => {
8491 await clearMessages . mutateAsync ( topicName ) ;
8592 } ;
8693 const canCleanup = data ?. cleanUpPolicy === CleanUpPolicy . DELETE ;
94+ const isConnectorsAvailable = connectors . length > 0 ;
8795
8896 return (
8997 < >
@@ -225,6 +233,19 @@ const Topic: React.FC = () => {
225233 >
226234 Statistics
227235 </ ActionNavLink >
236+ { isConnectorsAvailable && (
237+ < ActionNavLink
238+ to = { clusterTopicConnectorsRelativePath }
239+ className = { ( { isActive } ) => ( isActive ? 'is-active' : '' ) }
240+ permission = { {
241+ resource : ResourceType . TOPIC ,
242+ action : Action . ANALYSIS_VIEW ,
243+ value : topicName ,
244+ } }
245+ >
246+ Connectors
247+ </ ActionNavLink >
248+ ) }
228249 </ Navbar >
229250 < TopicActionsProvider openSidebarWithMessage = { openSidebarWithMessage } >
230251 < Suspense fallback = { < PageLoader /> } >
@@ -246,6 +267,12 @@ const Topic: React.FC = () => {
246267 path = { clusterTopicStatisticsRelativePath }
247268 element = { < Statistics /> }
248269 />
270+ { isConnectorsAvailable && (
271+ < Route
272+ path = { clusterTopicConnectorsRelativePath }
273+ element = { < Connectors connectors = { connectors } /> }
274+ />
275+ ) }
249276 < Route path = { clusterTopicEditRelativePath } element = { < Edit /> } />
250277 </ Routes >
251278 </ Suspense >
0 commit comments