@ -9,15 +9,18 @@ type ReturnType = {
error : Error | undefined ;
error : Error | undefined ;
loading : boolean ;
loading : boolean ;
tabs : PluginDetailsTab [ ] ;
tabs : PluginDetailsTab [ ] ;
defaultTab : string ;
} ;
} ;
export const usePluginDetailsTabs = ( plugin? : CatalogPlugin , defaultTabs : PluginDetailsTab [ ] = [ ] ) : ReturnType = > {
export const usePluginDetailsTabs = ( plugin? : CatalogPlugin , defaultTabs : PluginDetailsTab [ ] = [ ] ) : ReturnType = > {
const { loading , error , value : pluginConfig } = usePluginConfig ( plugin ) ;
const { loading , error , value : pluginConfig } = usePluginConfig ( plugin ) ;
const isPublished = Boolean ( plugin ? . isPublished ) ;
const isPublished = Boolean ( plugin ? . isPublished ) ;
const { pathname } = useLocation ( ) ;
const { pathname } = useLocation ( ) ;
const tabs = useMemo ( ( ) = > {
const [ tabs , defaultTab ] = useMemo ( ( ) = > {
const canConfigurePlugins = isOrgAdmin ( ) ;
const canConfigurePlugins = isOrgAdmin ( ) ;
const tabs : PluginDetailsTab [ ] = [ . . . defaultTabs ] ;
const tabs : PluginDetailsTab [ ] = [ . . . defaultTabs ] ;
let defaultTab ;
if ( isPublished ) {
if ( isPublished ) {
tabs . push ( {
tabs . push ( {
@ -30,7 +33,8 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, defaultTabs: Plugin
// Not extending the tabs with the config pages if the plugin is not installed
// Not extending the tabs with the config pages if the plugin is not installed
if ( ! pluginConfig ) {
if ( ! pluginConfig ) {
return tabs ;
defaultTab = PluginTabIds . OVERVIEW ;
return [ tabs , defaultTab ] ;
}
}
if ( canConfigurePlugins ) {
if ( canConfigurePlugins ) {
@ -42,6 +46,7 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, defaultTabs: Plugin
id : PluginTabIds.CONFIG ,
id : PluginTabIds.CONFIG ,
href : ` ${ pathname } ?page= ${ PluginTabIds . CONFIG } ` ,
href : ` ${ pathname } ?page= ${ PluginTabIds . CONFIG } ` ,
} ) ;
} ) ;
defaultTab = PluginTabIds . CONFIG ;
}
}
if ( pluginConfig . configPages ) {
if ( pluginConfig . configPages ) {
@ -52,6 +57,9 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, defaultTabs: Plugin
id : page.id ,
id : page.id ,
href : ` ${ pathname } ?page= ${ page . id } ` ,
href : ` ${ pathname } ?page= ${ page . id } ` ,
} ) ;
} ) ;
if ( ! defaultTab ) {
defaultTab = page . id ;
}
}
}
}
}
@ -66,12 +74,17 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, defaultTabs: Plugin
}
}
}
}
return tabs ;
if ( ! defaultTab ) {
defaultTab = PluginTabIds . OVERVIEW ;
}
return [ tabs , defaultTab ] ;
} , [ pluginConfig , defaultTabs , pathname , isPublished ] ) ;
} , [ pluginConfig , defaultTabs , pathname , isPublished ] ) ;
return {
return {
error ,
error ,
loading ,
loading ,
tabs ,
tabs ,
defaultTab ,
} ;
} ;
} ;
} ;