import { LOCAL_STORAGE_KEYS, useParams } from 'common' import { usePathname } from 'next/navigation' import { PropsWithChildren, useEffect, useRef } from 'react' import { ProjectLayout } from '../ProjectLayout' import { ObservabilityMenu } from './ObservabilityMenu' import { useIndexAdvisorStatus } from '@/components/interfaces/QueryPerformance/hooks/useIsIndexAdvisorStatus' import { BannerIndexAdvisor } from '@/components/ui/BannerStack/Banners/BannerIndexAdvisor' import { useBannerStack } from '@/components/ui/BannerStack/BannerStackProvider' import { UnknownInterface } from '@/components/ui/UnknownInterface' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { useLocalStorageQuery } from '@/hooks/misc/useLocalStorage' import { withAuth } from '@/hooks/misc/withAuth' interface ObservabilityLayoutProps { title: string } const ObservabilityLayoutContent = ({ title, children, }: PropsWithChildren) => { const { ref } = useParams() const pathname = usePathname() const { addBanner, dismissBanner } = useBannerStack() const { isIndexAdvisorAvailable, isIndexAdvisorEnabled } = useIndexAdvisorStatus() const [isIndexAdvisorBannerDismissed] = useLocalStorageQuery( LOCAL_STORAGE_KEYS.INDEX_ADVISOR_NOTICE_DISMISSED(ref ?? ''), false ) const prevPathnameRef = useRef(pathname) useEffect(() => { const isQueryPerformancePage = pathname?.includes('/query-performance') if ( isQueryPerformancePage && isIndexAdvisorAvailable && !isIndexAdvisorEnabled && !isIndexAdvisorBannerDismissed ) { addBanner({ id: 'index-advisor-banner', isDismissed: false, content: , priority: 3, }) } else if (isIndexAdvisorBannerDismissed || !isQueryPerformancePage || isIndexAdvisorEnabled) { dismissBanner('index-advisor-banner') } prevPathnameRef.current = pathname }, [ pathname, isIndexAdvisorAvailable, isIndexAdvisorEnabled, isIndexAdvisorBannerDismissed, addBanner, dismissBanner, ]) const { reportsAll } = useIsFeatureEnabled(['reports:all']) if (reportsAll) { return ( } isBlocking={false} > {children} ) } else { return } } const ObservabilityLayout = (props: PropsWithChildren) => { const { ref } = useParams() const { reportsAll } = useIsFeatureEnabled(['reports:all']) if (reportsAll) { return } else { return } } export default withAuth(ObservabilityLayout)