diff --git a/website/src/components/Tasks/CreateTask.tsx b/website/src/components/Tasks/CreateTask.tsx index 7a1363a7..652a867c 100644 --- a/website/src/components/Tasks/CreateTask.tsx +++ b/website/src/components/Tasks/CreateTask.tsx @@ -11,11 +11,16 @@ export const CreateTask = ({ task, taskType, isDisabled, onReplyChanged }: TaskS const labelColor = useColorModeValue("gray.600", "gray.400"); const [inputText, setInputText] = useState(""); - const textChangeHandler = (event: React.ChangeEvent) => { const text = event.target.value; - onReplyChanged({ content: { text }, state: "VALID" }); - setInputText(text); + const isTextBlank = !text || /^\s*$/.test(text) ? true : false; + if (!isTextBlank) { + onReplyChanged({ content: { text }, state: "VALID" }); + setInputText(text); + } else { + onReplyChanged({ content: { text }, state: "INVALID" }); + setInputText(""); + } }; return ( diff --git a/website/src/components/Tasks/Task.tsx b/website/src/components/Tasks/Task.tsx index 24a95d78..e02f5922 100644 --- a/website/src/components/Tasks/Task.tsx +++ b/website/src/components/Tasks/Task.tsx @@ -51,6 +51,8 @@ export const Task = ({ frontendId, task, trigger, mutate }) => { if (taskStatus !== "DEFAULT") setTaskStatus("DEFAULT"); } else if (state.state === "VALID") { if (taskStatus !== "SUBMITABLE") setTaskStatus("SUBMITABLE"); + } else if (state.state == "INVALID") { + setTaskStatus("NOT_SUBMITTABLE"); } }).current; diff --git a/website/src/types/TaskReplyState.ts b/website/src/types/TaskReplyState.ts index 602446f9..648dae3c 100644 --- a/website/src/types/TaskReplyState.ts +++ b/website/src/types/TaskReplyState.ts @@ -6,5 +6,9 @@ export interface TaskReplyDefault { content: T; state: "DEFAULT"; } +export interface TaskReplyInValid { + content: T; + state: "INVALID"; +} -export type TaskReplyState = TaskReplyValid | TaskReplyDefault; +export type TaskReplyState = TaskReplyValid | TaskReplyDefault | TaskReplyInValid;