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.pull/21833/head
parent
f105ec2794
commit
7b7728c93a
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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({
|
||||||
|
|
Loading…
Reference in New Issue