| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { useParams } from 'common'
- import { useMemo } from 'react'
- import type { CommandOptions, ICommand } from 'ui-patterns/CommandMenu'
- import { orderSectionFirst, useQuery, useRegisterCommands } from 'ui-patterns/CommandMenu'
- import { COMMAND_MENU_SECTIONS } from '@/components/interfaces/App/CommandMenu/CommandMenu.utils'
- import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
- const QUERY_PERFORMANCE_COMMAND_ID = 'nav-reports-query-performance'
- export function useReportsGotoCommands(options?: CommandOptions) {
- let { ref } = useParams()
- ref ||= '_'
- const { reportsAll } = useIsFeatureEnabled(['reports:all'])
- const commandQuery = useQuery()?.toLowerCase() ?? ''
- const prioritizeQueryPerformance = commandQuery.includes('query')
- const orderQueryPerformanceCommand = useMemo(() => {
- if (!prioritizeQueryPerformance) return undefined
- return (existingCommands: ICommand[], incomingCommands: ICommand[]) => {
- const filteredExisting = existingCommands.filter(
- (command) => command.id !== QUERY_PERFORMANCE_COMMAND_ID
- )
- return [...incomingCommands, ...filteredExisting]
- }
- }, [prioritizeQueryPerformance])
- const orderNavigateSection = useMemo<CommandOptions['orderSection'] | undefined>(() => {
- return prioritizeQueryPerformance ? orderSectionFirst : options?.orderSection
- }, [options?.orderSection, prioritizeQueryPerformance])
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.NAVIGATE,
- reportsAll
- ? [
- {
- id: 'nav-reports',
- name: 'Reports',
- route: `/project/${ref}/reports`,
- defaultHidden: true,
- },
- {
- id: 'nav-reports-api',
- name: 'API Reports',
- route: `/project/${ref}/reports/api-overview`,
- defaultHidden: true,
- },
- {
- id: 'nav-reports-storage',
- name: 'Storage Reports',
- route: `/project/${ref}/reports/storage`,
- defaultHidden: true,
- },
- {
- id: 'nav-reports-database',
- name: 'Database Reports',
- route: `/project/${ref}/reports/database`,
- defaultHidden: true,
- },
- ]
- : [],
- {
- ...options,
- orderSection: orderNavigateSection,
- deps: [ref, orderNavigateSection, ...(options?.deps ?? [])],
- }
- )
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.NAVIGATE,
- reportsAll
- ? [
- {
- id: QUERY_PERFORMANCE_COMMAND_ID,
- name: 'Query Performance Reports',
- route: `/project/${ref}/reports/query-performance`,
- defaultHidden: true,
- },
- ]
- : [],
- {
- ...options,
- orderCommands: orderQueryPerformanceCommand ?? options?.orderCommands,
- orderSection: orderNavigateSection,
- deps: [ref, orderQueryPerformanceCommand, orderNavigateSection, ...(options?.deps ?? [])],
- }
- )
- }
|