| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { Link } from 'lucide-react'
- import { toast } from 'sonner'
- import { Badge, copyToClipboard } from 'ui'
- import {
- useRegisterCommands,
- useResetCommandMenu,
- useSetCommandMenuOpen,
- } from 'ui-patterns/CommandMenu'
- import { COMMAND_MENU_SECTIONS } from './CommandMenu.utils'
- import { orderCommandSectionsByPriority } from './ordering'
- import { useProjectSettingsV2Query } from '@/data/config/project-settings-v2-query'
- import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
- export function useApiUrlCommand() {
- const setIsOpen = useSetCommandMenuOpen()
- const resetCommandMenu = useResetCommandMenu()
- const { data: project } = useSelectedProjectQuery()
- const { data: settings } = useProjectSettingsV2Query(
- { projectRef: project?.ref },
- { enabled: !!project }
- )
- const protocol = settings?.app_config?.protocol ?? 'https'
- const endpoint = settings?.app_config?.endpoint
- const apiUrl = endpoint ? `${protocol}://${endpoint}` : undefined
- useRegisterCommands(
- COMMAND_MENU_SECTIONS.ACTIONS,
- [
- {
- id: 'api-url',
- name: 'Copy API URL',
- action: () => {
- copyToClipboard(apiUrl ?? '', () => {
- toast.success('API URL copied to clipboard')
- })
- setIsOpen(false)
- resetCommandMenu()
- },
- icon: () => <Link />,
- badge: () => <Badge>Project: {project?.name}</Badge>,
- },
- ],
- {
- enabled: !!project,
- deps: [apiUrl, project],
- orderSection: orderCommandSectionsByPriority,
- sectionMeta: { priority: 3 },
- }
- )
- }
|