Skip to main content

Function: handleSubmit()

function handleSubmit(
event: SyntheticEvent<HTMLFormElement>,
properties: {
addMonitorToSite: (
siteIdentifier: string,
monitor: Monitor
) => Promise<void>;
clearError: () => void;
createSite: (siteData: {
identifier: string;
monitoring?: boolean;
monitors?: Monitor[];
name?: string;
}) => Promise<void>;
dynamicFieldValues?: MonitorValidationFieldValues;
generateUuid: () => string;
logger: LoggerInterface;
onSuccess?: () => void;
setFormError: (error: string | undefined) => void;
addMode: FormMode;
baselineUrl: string;
bodyKeyword: string;
certificateWarningDays: string;
checkIntervalMs: number;
edgeLocations: string;
expectedHeaderValue: string;
expectedJsonValue: string;
expectedStatusCode: string;
expectedValue: string;
formError: string | undefined;
headerName: string;
heartbeatExpectedStatus: string;
heartbeatMaxDriftSeconds: string;
heartbeatStatusField: string;
heartbeatTimestampField: string;
host: string;
jsonPath: string;
maxPongDelayMs: string;
maxReplicationLagSeconds: string;
maxResponseTimeMs: string;
monitorType:
| "cdn-edge-consistency"
| "dns"
| "http"
| "http-header"
| "http-json"
| "http-keyword"
| "http-latency"
| "http-status"
| "ping"
| "port"
| "replication"
| "server-heartbeat"
| "ssl"
| "websocket-keepalive";
name: string;
port: string;
primaryStatusUrl: string;
recordType: string;
replicaStatusUrl: string;
replicationTimestampField: string;
selectedExistingSite: string;
siteIdentifier: string;
url: string;
}
): Promise<void>;

Defined in: src/components/AddSiteForm/Submit.tsx:294

Handles form submission for adding sites or monitors.

Performs comprehensive validation based on add mode and monitor type:

  • For new sites: validates site name and monitor configuration
  • For existing sites: validates site selection and monitor configuration
  • For HTTP monitors: validates URL format and protocol
  • For port monitors: validates host and port number

Parametersโ€‹

eventโ€‹

SyntheticEvent<HTMLFormElement>

Form submission event

propertiesโ€‹

Form state, actions, and dependencies

addMonitorToSiteโ€‹

(siteIdentifier: string, monitor: Monitor) => Promise<void>

Add a monitor to an existing site

clearErrorโ€‹

() => void

Clear any existing error state

createSiteโ€‹

(siteData: { identifier: string; monitoring?: boolean; monitors?: Monitor[]; name?: string; }) => Promise<void>

Create a new site with monitors

dynamicFieldValues?โ€‹

MonitorValidationFieldValues

Precomputed monitor validation field map.

generateUuidโ€‹

() => string

UUID generator function for creating unique identifiers

loggerโ€‹

LoggerInterface

Logger instance for debugging and error tracking

onSuccess?โ€‹

() => void

Optional callback executed after successful submission

setFormErrorโ€‹

(error: string | undefined) => void

Set form error message

addModeโ€‹

FormMode

Form operation mode (new site vs existing site)

baselineUrlโ€‹

string

Baseline URL for CDN edge consistency monitors

bodyKeywordโ€‹

string

Keyword to match for HTTP keyword monitors

certificateWarningDaysโ€‹

string

SSL certificate warning days

checkIntervalMsโ€‹

number

Check interval in milliseconds

edgeLocationsโ€‹

string

Edge endpoint list for CDN edge consistency monitors

expectedHeaderValueโ€‹

string

Expected HTTP header value for header monitors

expectedJsonValueโ€‹

string

Expected JSON value for JSON monitors

expectedStatusCodeโ€‹

string

Expected HTTP status code for status-based HTTP monitors

expectedValueโ€‹

string

Expected value for DNS record verification

formErrorโ€‹

string | undefined

Current form validation error

headerNameโ€‹

string

Header name for HTTP header monitors

heartbeatExpectedStatusโ€‹

string

Expected heartbeat status field

heartbeatMaxDriftSecondsโ€‹

string

Heartbeat drift tolerance

heartbeatStatusFieldโ€‹

string

Heartbeat status field path

heartbeatTimestampFieldโ€‹

string

Heartbeat timestamp field path

hostโ€‹

string

Host/IP field for port and DNS monitors

jsonPathโ€‹

string

JSON path for HTTP JSON monitors

maxPongDelayMsโ€‹

string

Maximum pong delay for WebSocket monitors

maxReplicationLagSecondsโ€‹

string

Maximum replication lag in seconds

maxResponseTimeMsโ€‹

string

Maximum response time (milliseconds) for latency monitors

monitorTypeโ€‹

| "cdn-edge-consistency" | "dns" | "http" | "http-header" | "http-json" | "http-keyword" | "http-latency" | "http-status" | "ping" | "port" | "replication" | "server-heartbeat" | "ssl" | "websocket-keepalive"

Selected monitor type

nameโ€‹

string

Display name for the site

portโ€‹

string

Port number field for port monitors

primaryStatusUrlโ€‹

string

Primary replication status URL

recordTypeโ€‹

string

DNS record type field for DNS monitors

replicaStatusUrlโ€‹

string

Replica status URL

replicationTimestampFieldโ€‹

string

Replication timestamp field

selectedExistingSiteโ€‹

string

Selected existing site identifier when adding to existing

siteIdentifierโ€‹

string

Generated site identifier

urlโ€‹

string

URL field for HTTP monitors

Returnsโ€‹

Promise<void>

Promise that resolves when submission is complete

Exampleโ€‹

const handleFormSubmit = (e: SyntheticEvent<HTMLFormElement>) => {
handleSubmit(e, {
...formState,
...formActions,
...storeActions,
generateUuid,
logger,
onSuccess: () => setIsVisible(false),
});
};