function NetworkingSettings()

in libs/designer/src/lib/ui/settings/index.tsx [404:669]


function NetworkingSettings({
  nodeId,
  readOnly,
  nodeSettings,
  isExpanded,
  validationErrors,
  updateSettings,
  dispatch,
  uploadChunkMetadata,
  downloadChunkMetadata,
}: SettingSectionProps & {
  uploadChunkMetadata: UploadChunkMetadata | undefined;
  downloadChunkMetadata: DownloadChunkMetadata | undefined;
}): JSX.Element | null {
  const {
    asynchronous,
    disableAsyncPattern,
    suppressWorkflowHeaders,
    suppressWorkflowHeadersOnResponse,
    requestOptions,
    retryPolicy,
    uploadChunk,
    paging,
    downloadChunkSize,
  } = nodeSettings;

  const { hideContentTransferSettings } = useHostOptions();

  const onAsyncPatternToggle = (checked: boolean): void => {
    updateSettings({
      disableAsyncPattern: {
        isSupported: !!disableAsyncPattern?.isSupported,
        value: checked,
      },
    });
  };

  const onAsyncResponseToggle = (checked: boolean): void => {
    updateSettings({
      asynchronous: {
        isSupported: !!asynchronous?.isSupported,
        value: checked,
      },
    });
  };

  const onRequestOptionsChange = (newVal: string): void => {
    updateSettings(
      {
        requestOptions: {
          isSupported: !!requestOptions?.isSupported,
          value: { timeout: newVal },
        },
      },
      true
    );
  };

  const onSuppressHeadersToggle = (checked: boolean): void => {
    updateSettings({
      suppressWorkflowHeaders: {
        isSupported: !!suppressWorkflowHeaders?.isSupported,
        value: checked,
      },
    });
  };

  const onPaginationToggle = (checked: boolean): void => {
    updateSettings(
      {
        paging: {
          isSupported: !!paging?.isSupported,
          value: { ...paging?.value, enabled: checked },
        },
      },
      true
    );
  };

  const onPaginationValueChange = (newVal: string): void => {
    updateSettings(
      {
        paging: {
          isSupported: !!paging?.isSupported,
          value: {
            enabled: !!paging?.value?.enabled,
            value: Number(newVal),
          },
        },
      },
      true
    );
  };

  const onHeadersOnResponseToggle = (checked: boolean): void => {
    updateSettings({
      suppressWorkflowHeadersOnResponse: {
        isSupported: !!suppressWorkflowHeadersOnResponse?.isSupported,
        value: checked,
      },
    });
  };

  const onContentTransferToggle = (checked: boolean): void => {
    updateSettings({
      uploadChunk: {
        isSupported: !!uploadChunk?.isSupported,
        value: checked ? { ...uploadChunk?.value, transferMode: constants.SETTINGS.TRANSFER_MODE.CHUNKED } : undefined,
      },
    });
  };

  const onUploadChunkSizeChange = (newVal: string): void => {
    updateSettings(
      {
        uploadChunk: {
          isSupported: !!uploadChunk?.isSupported,
          value: {
            ...(uploadChunk?.value as any),
            ...{ uploadChunkSize: newVal === '' ? undefined : Number.parseInt(newVal, 10) },
          },
        },
      },
      true
    );
  };

  const onDownloadChunkSizeChange = (newVal: string): void => {
    updateSettings(
      {
        downloadChunkSize: {
          isSupported: !!downloadChunkSize?.isSupported,
          value: newVal === '' ? undefined : Number.parseInt(newVal, 10),
        },
      },
      true
    );
  };

  const onRetryPolicyChange = (selectedOption: IDropdownOption): void => {
    updateSettings(
      {
        retryPolicy: {
          isSupported: !!retryPolicy?.isSupported,
          value: {
            type: selectedOption.key.toString(),
            count: retryPolicy?.value?.count,
            interval: retryPolicy?.value?.interval,
          },
        },
      },
      true
    );
  };

  const onRetryCountChange = (newVal: string): void => {
    updateSettings(
      {
        retryPolicy: {
          isSupported: !!retryPolicy?.isSupported,
          value: {
            ...(retryPolicy?.value as any),
            count: Number.isNaN(Number(newVal)) ? newVal : Number(newVal),
          },
        },
      },
      true
    );
  };

  const onRetryIntervalChange = (newVal: string): void => {
    updateSettings(
      {
        retryPolicy: {
          isSupported: !!retryPolicy?.isSupported,
          value: {
            ...(retryPolicy?.value as any),
            interval: newVal,
          },
        },
      },
      true
    );
  };

  const onRetryMinIntervalChange = (newVal: string): void => {
    updateSettings(
      {
        retryPolicy: {
          isSupported: !!retryPolicy?.isSupported,
          value: {
            ...(retryPolicy?.value as any),
            minimumInterval: newVal,
          },
        },
      },
      true
    );
  };

  const onRetryMaxIntervalChange = (newVal: string): void => {
    updateSettings(
      {
        retryPolicy: {
          isSupported: !!retryPolicy?.isSupported,
          value: {
            ...(retryPolicy?.value as any),
            maximumInterval: newVal,
          },
        },
      },
      true
    );
  };

  if (
    retryPolicy?.isSupported ||
    suppressWorkflowHeaders?.isSupported ||
    suppressWorkflowHeadersOnResponse?.isSupported ||
    paging?.isSupported ||
    uploadChunk?.isSupported ||
    downloadChunkSize?.isSupported ||
    asynchronous?.isSupported ||
    disableAsyncPattern?.isSupported ||
    requestOptions?.isSupported
  ) {
    return (
      <Networking
        nodeId={nodeId}
        readOnly={readOnly}
        expanded={isExpanded}
        validationErrors={validationErrors}
        suppressWorkflowHeaders={suppressWorkflowHeaders}
        suppressWorkflowHeadersOnResponse={suppressWorkflowHeadersOnResponse}
        paging={paging}
        asynchronous={asynchronous}
        requestOptions={requestOptions}
        disableAsyncPattern={disableAsyncPattern}
        chunkedTransferMode={equals(uploadChunk?.value?.transferMode, constants.SETTINGS.TRANSFER_MODE.CHUNKED)}
        uploadChunkMetadata={uploadChunkMetadata}
        downloadChunkMetadata={downloadChunkMetadata}
        retryPolicy={retryPolicy}
        uploadChunk={uploadChunk}
        downloadChunkSize={downloadChunkSize}
        hideContentTransferSettings={hideContentTransferSettings}
        onHeaderClick={(sectionName) => dispatch(setExpandedSections(sectionName))}
        onAsyncPatternToggle={onAsyncPatternToggle}
        onAsyncResponseToggle={onAsyncResponseToggle}
        onContentTransferToggle={onContentTransferToggle}
        onUploadChunkSizeChange={onUploadChunkSizeChange}
        onDownloadChunkSizeChange={onDownloadChunkSizeChange}
        onPaginationToggle={onPaginationToggle}
        onPaginationValueChange={onPaginationValueChange}
        onRequestOptionsChange={onRequestOptionsChange}
        onHeadersOnResponseToggle={onHeadersOnResponseToggle}
        onSuppressHeadersToggle={onSuppressHeadersToggle}
        onRetryPolicyChange={onRetryPolicyChange}
        onRetryCountChange={onRetryCountChange}
        onRetryIntervalChange={onRetryIntervalChange}
        onRetryMinIntervalChange={onRetryMinIntervalChange}
        onRetryMaxIntervalChange={onRetryMaxIntervalChange}
      />
    );
  }
  return null;
}