diff --git a/src/RoomInvite.js b/src/RoomInvite.js index ec99cd8e9a..64aab36128 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -43,11 +43,6 @@ function inviteMultipleToRoom(roomId, addrs) { export function showStartChatInviteDialog() { const AddressPickerDialog = sdk.getComponent("dialogs.AddressPickerDialog"); - const validAddressTypes = ['mx-user-id']; - if (MatrixClientPeg.get().getIdentityServerUrl()) { - validAddressTypes.push('email'); - } - Modal.createTrackedDialog('Start a chat', '', AddressPickerDialog, { title: _t('Start a chat'), description: _t("Who would you like to communicate with?"), @@ -59,7 +54,7 @@ export function showStartChatInviteDialog() { } return _t("Name or Matrix ID"); }, - validAddressTypes, + validAddressTypes: ['mx-user-id', 'email'], button: _t("Start Chat"), onFinished: _onStartDmFinished, }, /*className=*/null, /*isPriority=*/false, /*isStatic=*/true); @@ -68,11 +63,6 @@ export function showStartChatInviteDialog() { export function showRoomInviteDialog(roomId) { const AddressPickerDialog = sdk.getComponent("dialogs.AddressPickerDialog"); - const validAddressTypes = ['mx-user-id']; - if (MatrixClientPeg.get().getIdentityServerUrl()) { - validAddressTypes.push('email'); - } - Modal.createTrackedDialog('Chat Invite', '', AddressPickerDialog, { title: _t('Invite new room members'), button: _t('Send Invites'), @@ -84,7 +74,7 @@ export function showRoomInviteDialog(roomId) { } return _t("Name or Matrix ID"); }, - validAddressTypes, + validAddressTypes: ['mx-user-id', 'email'], onFinished: (shouldInvite, addrs) => { _onRoomInviteFinished(roomId, shouldInvite, addrs); }, diff --git a/src/components/views/dialogs/AddressPickerDialog.js b/src/components/views/dialogs/AddressPickerDialog.js index 8f0a42198e..32c5cf6900 100644 --- a/src/components/views/dialogs/AddressPickerDialog.js +++ b/src/components/views/dialogs/AddressPickerDialog.js @@ -77,6 +77,12 @@ module.exports = createReactClass({ }, getInitialState: function() { + let validAddressTypes = this.props.validAddressTypes; + // Remove email from validAddressTypes if no IS is configured. It may be added at a later stage by the user + if (!MatrixClientPeg.get().getIdentityServerUrl() && validAddressTypes.includes("email")) { + validAddressTypes = validAddressTypes.splice(validAddressTypes.indexOf("email"), 1); + } + return { // Whether to show an error message because of an invalid address invalidAddressError: false, @@ -95,8 +101,8 @@ module.exports = createReactClass({ // auto-completion results for the current search query. suggestedList: [], // List of address types initialised from props, but may change while the - // dialog is open. - validAddressTypes: this.props.validAddressTypes, + // dialog is open and represents the supported list of address types at this time. + validAddressTypes, }; }, @@ -678,7 +684,9 @@ module.exports = createReactClass({ } let identityServer; - if (this.props.pickerType === 'user' && !this.state.validAddressTypes.includes('email')) { + // If picker cannot currently accept e-mail but should be able to + if (this.props.pickerType === 'user' && !this.state.validAddressTypes.includes('email') + && this.props.validAddressTypes.includes('email')) { const defaultIdentityServerUrl = getDefaultIdentityServerUrl(); if (defaultIdentityServerUrl) { identityServer =
{_t(