diff --git a/client/src/features/admin/SessionEnvironmentFormContent.tsx b/client/src/features/admin/SessionEnvironmentFormContent.tsx index dcd230f424..b37adf83f2 100644 --- a/client/src/features/admin/SessionEnvironmentFormContent.tsx +++ b/client/src/features/admin/SessionEnvironmentFormContent.tsx @@ -19,6 +19,8 @@ import cx from "classnames"; import { Control, Controller, FieldErrors } from "react-hook-form"; import { Input, Label } from "reactstrap"; + +import { CONTAINER_IMAGE_PATTERN } from "../sessionsV2/session.constants"; import SessionEnvironmentAdvancedFields from "./SessionEnvironmentAdvancedFields"; export interface SessionEnvironmentForm { @@ -105,9 +107,18 @@ export default function SessionEnvironmentFormContent({ {...field} /> )} - rules={{ required: true }} + rules={{ + required: "Please provide a container image.", + pattern: { + value: CONTAINER_IMAGE_PATTERN, + message: "Please provide a valid container image.", + }, + }} /> -
Please provide a container image
+
+ {errors.container_image?.message ?? + "Please provide a valid container image."} +
diff --git a/client/src/features/sessionsV2/components/SessionForm/CustomEnvironmentFields.tsx b/client/src/features/sessionsV2/components/SessionForm/CustomEnvironmentFields.tsx index a143d22672..6ea4c389aa 100644 --- a/client/src/features/sessionsV2/components/SessionForm/CustomEnvironmentFields.tsx +++ b/client/src/features/sessionsV2/components/SessionForm/CustomEnvironmentFields.tsx @@ -17,13 +17,15 @@ */ import cx from "classnames"; -import { useState, useCallback } from "react"; +import { useCallback, useState } from "react"; import { Controller } from "react-hook-form"; -import { Label, Input, Collapse } from "reactstrap"; +import { Collapse, Input, Label } from "reactstrap"; + import ChevronFlippedIcon from "../../../../components/icons/ChevronFlippedIcon"; -import { EnvironmentFieldsProps } from "./EnvironmentField"; -import { AdvancedSettingsFields } from "./AdvancedSettingsFields"; +import { CONTAINER_IMAGE_PATTERN } from "../../session.constants"; import { SessionLauncherForm } from "../../sessionsV2.types"; +import { AdvancedSettingsFields } from "./AdvancedSettingsFields"; +import { EnvironmentFieldsProps } from "./EnvironmentField"; export function CustomEnvironmentFields({ watch, @@ -65,9 +67,21 @@ export function CustomEnvironmentFields({ {...field} /> )} - rules={{ required: watchEnvironmentKind === "CUSTOM" }} + rules={{ + required: { + value: watchEnvironmentKind === "CUSTOM", + message: "Please provide a container image.", + }, + pattern: { + value: CONTAINER_IMAGE_PATTERN, + message: "Please provide a valid container image.", + }, + }} /> -
Please provide a container image
+
+ {errors.container_image?.message ?? + "Please provide a valid container image."} +
( )} + rules={{ + required: { + value: environmentKind === "CUSTOM", + message: "Please provide a container image.", + }, + pattern: { + value: CONTAINER_IMAGE_PATTERN, + message: "Please provide a valid container image.", + }, + }} /> -
Please provide a container image
+
+ {errors.container_image?.message ?? + "Please provide a valid container image."} +