diff --git a/web/app/components/workflow/nodes/trigger-webhook/components/parameter-table.tsx b/web/app/components/workflow/nodes/trigger-webhook/components/parameter-table.tsx index 5ad49662d6..1cad1a2d78 100644 --- a/web/app/components/workflow/nodes/trigger-webhook/components/parameter-table.tsx +++ b/web/app/components/workflow/nodes/trigger-webhook/components/parameter-table.tsx @@ -4,12 +4,25 @@ import React from 'react' import { useTranslation } from 'react-i18next' import GenericTable from './generic-table' import type { ColumnConfig, GenericTableRow } from './generic-table' -import type { WebhookParam } from '../types' +import type { ParameterType, WebhookParameter } from '../types' + +const normalizeParamType = (type: string): ParameterType => { + switch (type) { + case 'string': + case 'number': + case 'boolean': + case 'array': + case 'object': + return type + default: + return 'string' + } +} type ParameterTableProps = { title: string - parameters: WebhookParam[] - onChange: (params: WebhookParam[]) => void + parameters: WebhookParameter[] + onChange: (params: WebhookParameter[]) => void readonly?: boolean placeholder?: string showType?: boolean @@ -70,22 +83,19 @@ const ParameterTable: FC = ({ required: false, } - // Convert WebhookParam[] to GenericTableRow[] const tableData: GenericTableRow[] = parameters.map(param => ({ - key: param.key, + key: param.name, type: param.type, required: param.required, - value: param.value, })) const handleDataChange = (data: GenericTableRow[]) => { - const newParams: WebhookParam[] = data + const newParams: WebhookParameter[] = data .filter(row => typeof row.key === 'string' && (row.key as string).trim() !== '') .map(row => ({ - key: String(row.key), - type: (row.type as string) || 'string', + name: String(row.key), + type: normalizeParamType((row.type as string) || 'string'), required: Boolean(row.required), - value: (row.value as string) || '', })) onChange(newParams) } diff --git a/web/app/components/workflow/nodes/trigger-webhook/panel.tsx b/web/app/components/workflow/nodes/trigger-webhook/panel.tsx index 2191e43d6b..7fc12ef556 100644 --- a/web/app/components/workflow/nodes/trigger-webhook/panel.tsx +++ b/web/app/components/workflow/nodes/trigger-webhook/panel.tsx @@ -2,7 +2,7 @@ import type { FC } from 'react' import React, { useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' -import type { HttpMethod, WebhookParam, WebhookParameter, WebhookTriggerNodeType } from './types' +import type { HttpMethod, WebhookTriggerNodeType } from './types' import useConfig from './use-config' import ParameterTable from './components/parameter-table' import HeaderTable from './components/header-table' @@ -114,8 +114,8 @@ const Panel: FC> = ({ handleParamsChange(params as unknown as WebhookParameter[])} + parameters={inputs.params} + onChange={handleParamsChange} placeholder={t(`${i18nPrefix}.noQueryParameters`)} showType={false} /> @@ -135,8 +135,8 @@ const Panel: FC> = ({ handleBodyChange(params as unknown as WebhookParameter[])} + parameters={inputs.body} + onChange={handleBodyChange} placeholder={t(`${i18nPrefix}.noBodyParameters`)} showType={true} isRequestBody={true} diff --git a/web/app/components/workflow/nodes/trigger-webhook/types.ts b/web/app/components/workflow/nodes/trigger-webhook/types.ts index cbc6ae2b24..472aa1f97d 100644 --- a/web/app/components/workflow/nodes/trigger-webhook/types.ts +++ b/web/app/components/workflow/nodes/trigger-webhook/types.ts @@ -12,13 +12,6 @@ export type WebhookParameter = { required: boolean } -export type WebhookParam = { - key: string - type: string - value: string - required: boolean -} - export type WebhookHeader = { name: string required: boolean