import clsx from 'clsx'
import Link from 'next/link'
import { useParams } from 'common/hooks'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import { FormSection, FormSectionContent, FormSectionLabel } from 'components/ui/Forms'
import { useProjectApiQuery } from 'data/config/project-api-query'
import { useEdgeFunctionsQuery } from 'data/edge-functions/edge-functions-query'
import { uuidv4 } from 'lib/helpers'
import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
IconChevronDown,
IconPlus,
IconTrash,
Input,
Listbox,
SidePanel,
} from 'ui'
import { HTTPArgument } from './EditHookPanel'
interface HTTPRequestFieldsProps {
type: 'http_request' | 'supabase_function'
errors: any
httpHeaders: HTTPArgument[]
httpParameters: HTTPArgument[]
onAddHeader: (header?: any) => void
onUpdateHeader: (idx: number, property: string, value: string) => void
onRemoveHeader: (idx: number) => void
onAddParameter: () => void
onUpdateParameter: (idx: number, property: string, value: string) => void
onRemoveParameter: (idx: number) => void
}
const HTTPRequestFields = ({
type,
errors,
httpHeaders = [],
httpParameters = [],
onAddHeader,
onUpdateHeader,
onRemoveHeader,
onAddParameter,
onUpdateParameter,
onRemoveParameter,
}: HTTPRequestFieldsProps) => {
const { project: selectedProject } = useProjectContext()
const { ref } = useParams()
const { data: settings } = useProjectApiQuery({ projectRef: ref })
const { data: functions } = useEdgeFunctionsQuery({ projectRef: ref })
const edgeFunctions = functions ?? []
const apiService = settings?.autoApiService
const anonKey = apiService?.service_api_keys.find((x) => x.name === 'service_role key')
? apiService.serviceApiKey
: '[YOUR API KEY]'
return (
<>
Select which edge function to trigger No edge functions created yet {errors.http_url}
Add auth header with service key
Required if your edge function enforces JWT verification
Add custom source header
Useful to verify that the edge function was triggered from this webhook