Chore: Move isEmail helper (#23489)

pull/23491/head^2
Tasso Evangelista 4 years ago committed by GitHub
parent ac8cc4bd25
commit c9efe0b33f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      app/livechat/client/views/app/tabbar/visitorTranscript.js
  2. 1
      app/utils/client/index.js
  3. 23
      app/utils/lib/isEmail.js
  4. 2
      client/views/account/AccountProfileForm.js
  5. 2
      client/views/admin/emailInbox/EmailInboxForm.js
  6. 4
      client/views/admin/mailer/Mailer.js
  7. 2
      client/views/admin/users/InviteUsers.js
  8. 2
      client/views/admin/users/UserForm.js
  9. 2
      client/views/omnichannel/departments/EditDepartment.js
  10. 2
      client/views/omnichannel/directory/contacts/contextualBar/ContactNewEdit.js
  11. 3
      client/views/room/contextualBar/ExportMessages/MailExportForm.js
  12. 21
      lib/utils/isEmail.ts

@ -4,7 +4,8 @@ import { Template } from 'meteor/templating';
import { dispatchToastMessage } from '../../../../../../client/lib/toast';
import { handleError } from '../../../../../../client/lib/utils/handleError';
import { t, isEmail, roomTypes } from '../../../../../utils';
import { t, roomTypes } from '../../../../../utils';
import { isEmail } from '../../../../../../lib/utils/isEmail';
import { APIClient } from '../../../../../utils/client';
import './visitorTranscript.html';

@ -1,7 +1,6 @@
export { t, isRtl } from '../lib/tapi18n';
export { getDefaultSubscriptionPref } from '../lib/getDefaultSubscriptionPref';
export { Info } from '../rocketchat.info';
export { isEmail } from '../lib/isEmail';
export { getUserPreference } from '../lib/getUserPreference';
export { fileUploadMediaWhiteList, fileUploadIsValidContentType } from '../lib/fileUploadRestrictions';
export { roomTypes } from './lib/roomTypes';

@ -1,23 +0,0 @@
/*
* Code from https://github.com/dleitee/valid.js
* Checks for email
* @params email
* @return boolean
*/
export const isEmail = (email) => {
const sQtext = '[^\\x0d\\x22\\x5c]';
const sDtext = '[^\\x0d\\x5b-\\x5d]';
const sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d]+';
const sQuotedPair = '\\x5c[\\x00-\\x7f]';
const sDomainLiteral = `\\x5b(${ sDtext }|${ sQuotedPair })*\\x5d`;
const sQuotedString = `\\x22(${ sQtext }|${ sQuotedPair })*\\x22`;
const sDomainRef = sAtom;
const sSubDomain = `(${ sDomainRef }|${ sDomainLiteral })`;
const sWord = `(${ sAtom }|${ sQuotedString })`;
const sDomain = `${ sSubDomain }(\\x2e${ sSubDomain })*`;
const sLocalPart = `${ sWord }(\\x2e${ sWord })*`;
const sAddrSpec = `${ sLocalPart }\\x40${ sDomain }`;
const sValidEmail = `^${ sAddrSpec }$`;
const reg = new RegExp(sValidEmail);
return reg.test(email);
};

@ -14,8 +14,8 @@ import {
import { useDebouncedCallback, useSafely } from '@rocket.chat/fuselage-hooks';
import React, { useCallback, useMemo, useEffect, useState } from 'react';
import { isEmail } from '../../../app/utils/lib/isEmail.js';
import { getUserEmailAddress } from '../../../lib/getUserEmailAddress';
import { isEmail } from '../../../lib/utils/isEmail';
import CustomFieldsForm from '../../components/CustomFieldsForm';
import { USER_STATUS_TEXT_MAX_LENGTH } from '../../components/UserStatus';
import UserStatusMenu from '../../components/UserStatusMenu';

@ -13,7 +13,7 @@ import {
import { useMutableCallback } from '@rocket.chat/fuselage-hooks';
import React, { useCallback, useState } from 'react';
import { isEmail } from '../../../../app/utils/client';
import { isEmail } from '../../../../lib/utils/isEmail';
import AutoCompleteDepartment from '../../../components/AutoCompleteDepartment';
import GenericModal from '../../../components/GenericModal';
import Page from '../../../components/Page';

@ -10,8 +10,8 @@ import {
} from '@rocket.chat/fuselage';
import React, { useState, useCallback } from 'react';
import { isEmail } from '../../../../app/utils/lib/isEmail.js';
import { isJSON } from '../../../../app/utils/lib/isJSON.js';
import { isJSON } from '../../../../app/utils/lib/isJSON';
import { isEmail } from '../../../../lib/utils/isEmail';
import Page from '../../../components/Page';
import { useTranslation } from '../../../contexts/TranslationContext';

@ -1,7 +1,7 @@
import { Box, Button, Icon, TextAreaInput } from '@rocket.chat/fuselage';
import React, { useCallback, useState } from 'react';
import { isEmail } from '../../../../app/utils/lib/isEmail.js';
import { isEmail } from '../../../../lib/utils/isEmail';
import VerticalBar from '../../../components/VerticalBar';
import { useMethod } from '../../../contexts/ServerContext';
import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext';

@ -12,7 +12,7 @@ import {
} from '@rocket.chat/fuselage';
import React, { useCallback, useMemo, useState } from 'react';
import { isEmail } from '../../../../app/utils/lib/isEmail.js';
import { isEmail } from '../../../../lib/utils/isEmail';
import CustomFieldsForm from '../../../components/CustomFieldsForm';
import VerticalBar from '../../../components/VerticalBar';
import { useTranslation } from '../../../contexts/TranslationContext';

@ -17,7 +17,7 @@ import { useMutableCallback, useUniqueId } from '@rocket.chat/fuselage-hooks';
import React, { useMemo, useState, useRef } from 'react';
import { useSubscription } from 'use-subscription';
import { isEmail } from '../../../../app/utils/client';
import { isEmail } from '../../../../lib/utils/isEmail';
import Page from '../../../components/Page';
import { useRoomsList } from '../../../components/RoomAutoComplete/hooks/useRoomsList';
import { useRoute } from '../../../contexts/RouterContext';

@ -4,7 +4,7 @@ import React, { useState, useMemo } from 'react';
import { useSubscription } from 'use-subscription';
import { hasAtLeastOnePermission } from '../../../../../../app/authorization/client';
import { isEmail } from '../../../../../../app/utils/client';
import { isEmail } from '../../../../../../lib/utils/isEmail';
import CustomFieldsForm from '../../../../../components/CustomFieldsForm';
import VerticalBar from '../../../../../components/VerticalBar';
import { useToastMessageDispatch } from '../../../../../contexts/ToastMessagesContext';

@ -12,7 +12,8 @@ import {
import { useMutableCallback } from '@rocket.chat/fuselage-hooks';
import React, { useState, useEffect } from 'react';
import { roomTypes, isEmail } from '../../../../../app/utils/client';
import { roomTypes } from '../../../../../app/utils/client';
import { isEmail } from '../../../../../lib/utils/isEmail';
import UserAutoCompleteMultiple from '../../../../components/UserAutoCompleteMultiple';
import { useEndpoint } from '../../../../contexts/ServerContext';
import { useToastMessageDispatch } from '../../../../contexts/ToastMessagesContext';

@ -0,0 +1,21 @@
const sQtext = '[^\\x0d\\x22\\x5c]';
const sDtext = '[^\\x0d\\x5b-\\x5d]';
const sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d]+';
const sQuotedPair = '\\x5c[\\x00-\\x7f]';
const sDomainLiteral = `\\x5b(${ sDtext }|${ sQuotedPair })*\\x5d`;
const sQuotedString = `\\x22(${ sQtext }|${ sQuotedPair })*\\x22`;
const sDomainRef = sAtom;
const sSubDomain = `(${ sDomainRef }|${ sDomainLiteral })`;
const sWord = `(${ sAtom }|${ sQuotedString })`;
const sDomain = `${ sSubDomain }(\\x2e${ sSubDomain })*`;
const sLocalPart = `${ sWord }(\\x2e${ sWord })*`;
const sAddrSpec = `${ sLocalPart }\\x40${ sDomain }`;
const sValidEmail = `^${ sAddrSpec }$`;
const reg = new RegExp(sValidEmail);
/*
* Code from https://github.com/dleitee/valid.js
* Checks for email
* @params email
*/
export const isEmail = (email: string): boolean => reg.test(email);
Loading…
Cancel
Save