Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/livechat/client/views/app/tabbar/visitorTranscript.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
1 change: 0 additions & 1 deletion app/utils/client/index.js
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
23 changes: 0 additions & 23 deletions app/utils/lib/isEmail.js

This file was deleted.

2 changes: 1 addition & 1 deletion client/views/account/AccountProfileForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
2 changes: 1 addition & 1 deletion client/views/admin/emailInbox/EmailInboxForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
4 changes: 2 additions & 2 deletions client/views/admin/mailer/Mailer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
2 changes: 1 addition & 1 deletion client/views/admin/users/InviteUsers.js
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
2 changes: 1 addition & 1 deletion client/views/admin/users/UserForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
2 changes: 1 addition & 1 deletion client/views/omnichannel/departments/EditDepartment.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
21 changes: 21 additions & 0 deletions lib/utils/isEmail.ts
Original file line number Diff line number Diff line change
@@ -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);