diff --git a/src/Invite.js b/src/Invite.js index b79a245549..499336c0c6 100644 --- a/src/Invite.js +++ b/src/Invite.js @@ -19,48 +19,11 @@ import PropTypes from 'prop-types'; import MatrixClientPeg from './MatrixClientPeg'; import MultiInviter from './utils/MultiInviter'; import Modal from './Modal'; +import { getAddressType } from './UserAddress'; import createRoom from './createRoom'; import sdk from './'; import { _t } from './languageHandler'; -const emailRegex = /^\S+@\S+\.\S+$/; - -const mxidRegex = /^@\S+:\S+$/ - -export const addressTypes = [ - 'mx', 'email', -]; - -// PropType definition for an object describing -// an address that can be invited to a room (which -// could be a third party identifier or a matrix ID) -// along with some additional information about the -// address / target. -export const UserAddressType = PropTypes.shape({ - addressType: PropTypes.oneOf(addressTypes).isRequired, - address: PropTypes.string.isRequired, - displayName: PropTypes.string, - avatarMxc: PropTypes.string, - // true if the address is known to be a valid address (eg. is a real - // user we've seen) or false otherwise (eg. is just an address the - // user has entered) - isKnown: PropTypes.bool, -}); - -export function getAddressType(inputText) { - const isEmailAddress = emailRegex.test(inputText); - const isMatrixId = mxidRegex.test(inputText); - - // sanity check the input for user IDs - if (isEmailAddress) { - return 'email'; - } else if (isMatrixId) { - return 'mx'; - } else { - return null; - } -} - export function inviteToRoom(roomId, addr) { const addrType = getAddressType(addr); diff --git a/src/components/views/dialogs/UserPickerDialog.js b/src/components/views/dialogs/UserPickerDialog.js index f4ea0c6a24..bde1ab0910 100644 --- a/src/components/views/dialogs/UserPickerDialog.js +++ b/src/components/views/dialogs/UserPickerDialog.js @@ -19,11 +19,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { _t } from '../../../languageHandler'; import sdk from '../../../index'; -import { getAddressType } from '../../../Invite'; import MatrixClientPeg from '../../../MatrixClientPeg'; import AccessibleButton from '../elements/AccessibleButton'; import Promise from 'bluebird'; -import { addressTypes } from '../../../Invite.js'; +import { addressTypes, getAddressType } from '../../../UserAddress.js'; const TRUNCATE_QUERY_LIST = 40; const QUERY_USER_DIRECTORY_DEBOUNCE_MS = 200; diff --git a/src/components/views/elements/AddressSelector.js b/src/components/views/elements/AddressSelector.js index 1aae10737e..75fe650600 100644 --- a/src/components/views/elements/AddressSelector.js +++ b/src/components/views/elements/AddressSelector.js @@ -20,7 +20,7 @@ limitations under the License. import React from 'react'; import sdk from '../../../index'; import classNames from 'classnames'; -import { UserAddressType } from '../../../Invite'; +import { UserAddressType } from '../../../UserAddress'; export default React.createClass({ displayName: 'AddressSelector', diff --git a/src/components/views/elements/AddressTile.js b/src/components/views/elements/AddressTile.js index ba7d79d987..bee02489fe 100644 --- a/src/components/views/elements/AddressTile.js +++ b/src/components/views/elements/AddressTile.js @@ -20,7 +20,7 @@ import classNames from 'classnames'; import sdk from "../../../index"; import MatrixClientPeg from "../../../MatrixClientPeg"; import { _t } from '../../../languageHandler'; -import { UserAddressType } from '../../../Invite.js'; +import { UserAddressType } from '../../../UserAddress.js'; export default React.createClass({ diff --git a/src/utils/MultiInviter.js b/src/utils/MultiInviter.js index 9cdfb947f4..1d5eac073a 100644 --- a/src/utils/MultiInviter.js +++ b/src/utils/MultiInviter.js @@ -14,7 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -import {getAddressType, inviteToRoom} from '../Invite'; +import {getAddressType} from '../UserAddress'; +import {inviteToRoom} from '../Invite'; import Promise from 'bluebird'; /**