@@ -8,11 +8,14 @@ import {
88 DropdownMenuSeparator ,
99 DropdownMenuTrigger ,
1010} from '@/components/ui/dropdownMenu' ;
11+ import { useInstanceClientIdParams } from '@/config/useInstanceClient' ;
1112import { RegistrationInfoResponse } from '@/features/instance/operations/queries/getRegistrationInfo' ;
13+ import { getStatusQueryOptions } from '@/features/instance/operations/queries/getStatus' ;
1214import { useInstanceManagePermission } from '@/hooks/usePermissions' ;
1315import { excludeFalsy } from '@/lib/arrays/excludeFalsy' ;
1416import { wasAReleasedBeforeB } from '@/lib/string/wasAReleasedBeforeB' ;
1517import { buildAbsoluteLinkToPage } from '@/lib/urls/buildAbsoluteLinkToPage' ;
18+ import { useQuery } from '@tanstack/react-query' ;
1619import { Link , useLoaderData , useParams } from '@tanstack/react-router' ;
1720import { DatabaseIcon , GaugeIcon , Menu , NotepadTextIcon , PackageIcon , ServerIcon , SettingsIcon } from 'lucide-react' ;
1821import { ReactNode , useMemo } from 'react' ;
@@ -30,6 +33,11 @@ export function InstanceNavBar() {
3033 const canManage = useInstanceManagePermission ( ) ;
3134 const params = useParams ( { strict : false } ) ;
3235
36+
37+ const instanceParams = useInstanceClientIdParams ( ) ;
38+ const { data : statusData } = useQuery ( getStatusQueryOptions ( instanceParams ) ) ;
39+ const restartRequired = statusData ?. restartRequired ?? false ;
40+
3341 const { version } : RegistrationInfoResponse = useLoaderData ( { strict : false } ) ;
3442 const apisAvailable = wasAReleasedBeforeB ( '4.7.0-beta.7' , version ) ;
3543 const statusAvailable = wasAReleasedBeforeB ( '4.6.0' , version ) ;
@@ -70,16 +78,16 @@ export function InstanceNavBar() {
7078 ] . filter ( excludeFalsy ) satisfies Link [ ] , [ canManage , params , apisAvailable , statusAvailable ] ) ;
7179 return (
7280 < >
73- < DesktopInstanceNavBar links = { links } />
74- < MobileInstanceNavBar links = { links } />
81+ < DesktopInstanceNavBar links = { links } restartRequired = { restartRequired } />
82+ < MobileInstanceNavBar links = { links } restartRequired = { restartRequired } />
7583 </ >
7684 ) ;
7785}
7886
79- function DesktopInstanceNavBar ( { links } : { links : Link [ ] } ) {
87+ function DesktopInstanceNavBar ( { links, restartRequired } : { links : Link [ ] , restartRequired : boolean } ) {
8088 return (
8189 < div className = "hidden md:flex items-center justify-between h-full text-sm text-white" >
82- < Breadcrumbs />
90+ < Breadcrumbs restartRequired = { restartRequired } />
8391 < div className = "flex space-x-2" >
8492 { links . map ( ( { shortName, ...link } ) => (
8593 < Link
@@ -100,11 +108,11 @@ function DesktopInstanceNavBar({ links }: { links: Link[] }) {
100108 ) ;
101109}
102110
103- function MobileInstanceNavBar ( { links } : { links : Link [ ] } ) {
111+ function MobileInstanceNavBar ( { links, restartRequired } : { links : Link [ ] , restartRequired : boolean } ) {
104112 return (
105113 < >
106114 < div className = "flex md:hidden items-center justify-between p-2 text-white" >
107- < Breadcrumbs />
115+ < Breadcrumbs restartRequired = { restartRequired } />
108116 < DropdownMenu >
109117 < DropdownMenuTrigger asChild >
110118 < Button variant = "ghost" className = "p-0" >
0 commit comments