diff --git a/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx b/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx
index ad91e3d1..6f0c7062 100644
--- a/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx
+++ b/src/frontend/src/components/CreateProject/CreateprojectLayout/index.tsx
@@ -70,6 +70,9 @@ export default function CreateprojectLayout() {
const isTerrainFollow = useTypedSelector(
state => state.createproject.isTerrainFollow,
);
+ const isNoflyzonePresent = useTypedSelector(
+ state => state.createproject.isNoflyzonePresent,
+ );
const initialState: FieldValues = {
name: '',
@@ -155,6 +158,25 @@ export default function CreateprojectLayout() {
};
const onSubmit = (data: any) => {
+ if (activeStep === 2) {
+ if (
+ !data?.outline_geojson ||
+ (Array.isArray(data?.outline_geojson) &&
+ data?.outline_geojson?.length === 0)
+ ) {
+ toast.error('Please upload or draw and save project area');
+ return;
+ }
+ if (
+ isNoflyzonePresent === 'yes' &&
+ (!data?.outline_no_fly_zones ||
+ data?.outline_no_fly_zones?.length === 0)
+ ) {
+ toast.error('Please upload or draw and save No Fly zone area');
+ return;
+ }
+ }
+
if (activeStep === 4 && !splitGeojson) return;
if (activeStep !== 5) {
dispatch(setCreateProjectState({ activeStep: activeStep + 1 }));
@@ -164,6 +186,9 @@ export default function CreateprojectLayout() {
...data,
is_terrain_follow: isTerrainFollow === 'hilly',
};
+ // remove key
+ if (isNoflyzonePresent === 'no') delete payload?.outline_no_fly_zones;
+
createProject(payload);
};
diff --git a/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx b/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx
index 6ceebb3e..1b043dcc 100644
--- a/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx
+++ b/src/frontend/src/components/CreateProject/FormContents/BasicInformation/index.tsx
@@ -17,6 +17,7 @@ export default function BasicInformation({
placeholder="Enter Name of the Project"
{...register('name', {
required: 'Name of the project is required',
+ setValueAs: (value: string) => value.trim(),
})}
/>
@@ -28,6 +29,7 @@ export default function BasicInformation({
placeholder="Description of the Project"
{...register('description', {
required: 'Description is Required',
+ setValueAs: (value: string) => value.trim(),
})}
/>
diff --git a/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx b/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx
index d941d23f..79d0bd69 100644
--- a/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx
+++ b/src/frontend/src/components/CreateProject/FormContents/Contributions/index.tsx
@@ -28,6 +28,7 @@ export default function Conditions({
placeholder="Enter Instructions for Drone Operators"
{...register('per_task_instructions', {
required: 'Instructions are required',
+ setValueAs: (value: string) => value.trim(),
})}
/>