diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 856a2ca577..ea5bf847ad 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -43,10 +43,7 @@ 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'); - } + const validAddressTypes = ['mx-user-id', 'email']; Modal.createTrackedDialog('Start a chat', '', AddressPickerDialog, { title: _t('Start a chat'), diff --git a/src/components/views/dialogs/AddressPickerDialog.js b/src/components/views/dialogs/AddressPickerDialog.js index 91088d2261..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.props.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 =