useMcpUrl.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { useParams } from 'common'
  2. import { useMemo } from 'react'
  3. import {
  4. FEATURE_GROUPS_NON_PLATFORM,
  5. FEATURE_GROUPS_PLATFORM,
  6. getMcpUrl,
  7. } from 'ui-patterns/McpUrlBuilder'
  8. import { StepContentProps } from './Connect.types'
  9. import { IS_PLATFORM } from '@/lib/constants'
  10. export function useMcpUrl(
  11. state: StepContentProps['state'],
  12. projectKeys: StepContentProps['projectKeys']
  13. ): string {
  14. const { ref: projectRef } = useParams()
  15. const readonly = Boolean(state.mcpReadonly)
  16. return useMemo(() => {
  17. const selectedFeatures = Array.isArray(state.mcpFeatures) ? state.mcpFeatures : []
  18. const supportedFeatures = IS_PLATFORM ? FEATURE_GROUPS_PLATFORM : FEATURE_GROUPS_NON_PLATFORM
  19. const validFeatures = selectedFeatures.filter((f) =>
  20. supportedFeatures.some((group) => group.id === f)
  21. )
  22. return getMcpUrl({
  23. projectRef,
  24. isPlatform: IS_PLATFORM,
  25. apiUrl: projectKeys.apiUrl ?? undefined,
  26. readonly,
  27. features: validFeatures,
  28. }).mcpUrl
  29. }, [projectKeys.apiUrl, projectRef, readonly, state.mcpFeatures])
  30. }