diff --git a/packages/webapp/src/components/maps-page/action-dispatcher/share-dialog/index.tsx b/packages/webapp/src/components/maps-page/action-dispatcher/share-dialog/index.tsx index 77d5efbc..8b903f1f 100644 --- a/packages/webapp/src/components/maps-page/action-dispatcher/share-dialog/index.tsx +++ b/packages/webapp/src/components/maps-page/action-dispatcher/share-dialog/index.tsx @@ -56,11 +56,18 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement } ); + const splitEmail = (emails: string): string[] => { + return emails.split(/,|;/) + .map(e => e.trim().replace(/\s/g, '')) + .filter(e => e.trim().length > 0); + } + + const addMutation = useMutation( (model: ShareModel) => { - const emails = model.emails.split(','); + const emails = splitEmail(model.emails); const permissions = emails.map((email: string) => { - return { email: email.replace(/\s/g, ''), role: model.role }; + return { email: email, role: model.role }; }); return client.addMapPermissions(mapId, model.message, permissions); }, @@ -114,9 +121,7 @@ const ShareDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement }; // very basic email validation, just make sure the basic syntax is fine - const isValid = model.emails - .split(/,|;/) - .filter(e => e.trim().length > 0) + const isValid = splitEmail(model.emails) .every(str => /\S+@\S+\.\S+/.test((str || '') .trim()));