diff options
| author | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-08 12:11:36 +0100 | 
|---|---|---|
| committer | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-08 12:11:36 +0100 | 
| commit | 6b220e094f215c488eb5102e25506f5b3d371245 (patch) | |
| tree | be0abbbf7a0c881d61e6375626f197c4ae124001 /src/util | |
| parent | b8e424a8602b586bbf346cd27171ede570a54973 (diff) | |
Refactor: event group form and API, extract JS
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/validation.ts | 51 | 
1 files changed, 38 insertions, 13 deletions
diff --git a/src/util/validation.ts b/src/util/validation.ts index f51769e..732fbf3 100644 --- a/src/util/validation.ts +++ b/src/util/validation.ts @@ -44,6 +44,14 @@ export type ValidatedEventData = Omit<      maxAttendeesBoolean: boolean;  }; +interface EventGroupData { +    eventGroupName: string; +    eventGroupDescription: string; +    eventGroupURL: string; +    hostName: string; +    creatorEmail: string; +} +  const validateEmail = (email: string) => {      if (!email || email.length === 0 || typeof email !== "string") {          return false; @@ -83,23 +91,11 @@ export const validateEventTime = (start: Date, end: Date): Error | boolean => {  export const validateEventData = (eventData: EventData): ValidationResponse => {      const validatedData: ValidatedEventData = { -        eventName: eventData.eventName, -        eventLocation: eventData.eventLocation, -        eventStart: eventData.eventStart, -        eventEnd: eventData.eventEnd, -        timezone: eventData.timezone, -        eventDescription: eventData.eventDescription, -        eventURL: eventData.eventURL, -        imagePath: eventData.imagePath, -        hostName: eventData.hostName, -        creatorEmail: eventData.creatorEmail, +        ...eventData,          eventGroupBoolean: eventData.eventGroupCheckbox === "true",          interactionBoolean: eventData.interactionCheckbox === "true",          joinBoolean: eventData.joinCheckbox === "true",          maxAttendeesBoolean: eventData.maxAttendeesCheckbox === "true", -        eventGroupID: eventData.eventGroupID, -        eventGroupEditToken: eventData.eventGroupEditToken, -        maxAttendees: eventData.maxAttendees,      };      const errors: Error[] = [];      if (!validatedData.eventName) { @@ -189,3 +185,32 @@ export const validateEventData = (eventData: EventData): ValidationResponse => {          errors: errors,      };  }; + +export const validateGroupData = (groupData: EventGroupData) => { +    const errors: Error[] = []; +    if (!groupData.eventGroupName) { +        errors.push({ +            message: "Event group name is required.", +            field: "eventGroupName", +        }); +    } +    if (!groupData.eventGroupDescription) { +        errors.push({ +            message: "Event group description is required.", +            field: "eventGroupDescription", +        }); +    } +    if (groupData.creatorEmail) { +        if (!validateEmail(groupData.creatorEmail)) { +            errors.push({ +                message: "Email address is invalid.", +                field: "creatorEmail", +            }); +        } +    } + +    return { +        data: groupData, +        errors: errors, +    }; +};  | 
