Make behaviour of ChatInviteDialog more consistent

* Pressing enter now always adds whatever was in the input box
   to the invite list, if it's a valid address (previously it
   added it to the list of it was a search result but submitted
   the form straight away if there were no results).
 * Remove isValidAddress as it was only used in the context of
   testing whether its return value was true or null (where null
   meant "unsure") so just use getAddressType instead.
This commit is contained in:
David Baker 2017-01-18 18:32:38 +00:00
parent f105ec2794
commit 7b7728c93a
2 changed files with 19 additions and 27 deletions

View file

@ -59,25 +59,3 @@ export function inviteMultipleToRoom(roomId, addrs) {
return this.inviter.invite(addrs); return this.inviter.invite(addrs);
} }
/**
* Checks is the supplied address is valid
*
* @param {addr} The mx userId or email address to check
* @returns true, false, or null for unsure
*/
export function isValidAddress(addr) {
// Check if the addr is a valid type
var addrType = this.getAddressType(addr);
if (addrType === "mx") {
let user = MatrixClientPeg.get().getUser(addr);
if (user) {
return true;
} else {
return null;
}
} else if (addrType === "email") {
return true;
} else {
return false;
}
}

View file

@ -74,8 +74,8 @@ module.exports = React.createClass({
var inviteList = this.state.inviteList.slice(); var inviteList = this.state.inviteList.slice();
// Check the text input field to see if user has an unconverted address // Check the text input field to see if user has an unconverted address
// If there is and it's valid add it to the local inviteList // If there is and it's valid add it to the local inviteList
var check = Invite.isValidAddress(this.refs.textinput.value); const addrType = Invite.getAddressType(this.refs.textinput.value);
if (check === true || check === null) { if (addrType !== null) {
inviteList.push(this.refs.textinput.value); inviteList.push(this.refs.textinput.value);
} else if (this.refs.textinput.value.length > 0) { } else if (this.refs.textinput.value.length > 0) {
this.setState({ error: true }); this.setState({ error: true });
@ -135,12 +135,26 @@ module.exports = React.createClass({
} else if (e.keyCode === 13) { // enter } else if (e.keyCode === 13) { // enter
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
this.onButtonClick(); if (this.state.queryList.length > 0) {
this.addressSelector.chooseSelection();
} else {
const addrType = Invite.getAddressType(this.refs.textinput.value);
if (addrType !== null) {
const inviteList = this.state.inviteList.slice();
inviteList.push(this.refs.textinput.value.trim());
this.setState({
inviteList: inviteList,
queryList: [],
});
} else {
this.setState({ error: true });
}
}
} else if (e.keyCode === 188 || e.keyCode === 9) { // comma or tab } else if (e.keyCode === 188 || e.keyCode === 9) { // comma or tab
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
var check = Invite.isValidAddress(this.refs.textinput.value); const addrType = Invite.getAddressType(this.refs.textinput.value);
if (check === true || check === null) { if (addrType !== null) {
var inviteList = this.state.inviteList.slice(); var inviteList = this.state.inviteList.slice();
inviteList.push(this.refs.textinput.value.trim()); inviteList.push(this.refs.textinput.value.trim());
this.setState({ this.setState({