diff options
| author | Raphael Kabo <raphaelkabo@hey.com> | 2024-02-25 21:34:33 +0000 | 
|---|---|---|
| committer | Raphael Kabo <raphaelkabo@hey.com> | 2024-02-26 00:11:03 +0000 | 
| commit | b3c9cba6478dc16d135313aa6d0adcc02d67ece6 (patch) | |
| tree | 508ef236dc805b950fedeeca7f8dd3559d66a162 /src/util | |
| parent | afd9fc4477fff90e5db917f350d99c3d01fba2bd (diff) | |
feat: optional public events/groups
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/validation.ts | 31 | 
1 files changed, 27 insertions, 4 deletions
diff --git a/src/util/validation.ts b/src/util/validation.ts index 732fbf3..b9a0c8a 100644 --- a/src/util/validation.ts +++ b/src/util/validation.ts @@ -5,11 +5,16 @@ type Error = {      field?: string;  }; -type ValidationResponse = { +type EventValidationResponse = {      data?: ValidatedEventData;      errors?: Error[];  }; +type EventGroupValidationResponse = { +    data?: ValidatedEventGroupData; +    errors?: Error[]; +}; +  interface EventData {      eventName: string;      eventLocation: string; @@ -21,6 +26,7 @@ interface EventData {      imagePath: string;      hostName: string;      creatorEmail: string; +    publicCheckbox: string;      eventGroupCheckbox: string;      eventGroupID: string;      eventGroupEditToken: string; @@ -33,11 +39,13 @@ interface EventData {  // EventData without the 'checkbox' fields  export type ValidatedEventData = Omit<      EventData, +    | "publicCheckbox"      | "eventGroupCheckbox"      | "interactionCheckbox"      | "joinCheckbox"      | "maxAttendeesCheckbox"  > & { +    publicBoolean: boolean;      eventGroupBoolean: boolean;      interactionBoolean: boolean;      joinBoolean: boolean; @@ -50,8 +58,13 @@ interface EventGroupData {      eventGroupURL: string;      hostName: string;      creatorEmail: string; +    publicCheckbox: string;  } +export type ValidatedEventGroupData = Omit<EventGroupData, "publicCheckbox"> & { +    publicBoolean: boolean; +}; +  const validateEmail = (email: string) => {      if (!email || email.length === 0 || typeof email !== "string") {          return false; @@ -89,9 +102,12 @@ export const validateEventTime = (start: Date, end: Date): Error | boolean => {      return true;  }; -export const validateEventData = (eventData: EventData): ValidationResponse => { +export const validateEventData = ( +    eventData: EventData, +): EventValidationResponse => {      const validatedData: ValidatedEventData = {          ...eventData, +        publicBoolean: eventData.publicCheckbox === "true",          eventGroupBoolean: eventData.eventGroupCheckbox === "true",          interactionBoolean: eventData.interactionCheckbox === "true",          joinBoolean: eventData.joinCheckbox === "true", @@ -186,7 +202,9 @@ export const validateEventData = (eventData: EventData): ValidationResponse => {      };  }; -export const validateGroupData = (groupData: EventGroupData) => { +export const validateGroupData = ( +    groupData: EventGroupData, +): EventGroupValidationResponse => {      const errors: Error[] = [];      if (!groupData.eventGroupName) {          errors.push({ @@ -209,8 +227,13 @@ export const validateGroupData = (groupData: EventGroupData) => {          }      } +    const validatedData: ValidatedEventGroupData = { +        ...groupData, +        publicBoolean: groupData.publicCheckbox === "true", +    }; +      return { -        data: groupData, +        data: validatedData,          errors: errors,      };  };  | 
