Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3076 from matrix-org/t3chguy/fix_community_add_room
Browse files Browse the repository at this point in the history
Fix AddressPickerDialog adding wrong entry to selected list case
  • Loading branch information
turt2live authored Jun 6, 2019
2 parents 3f6b266 + b2c39ba commit 6daf5a1
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/components/views/dialogs/AddressPickerDialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ module.exports = React.createClass({

onSelected: function(index) {
const selectedList = this.state.selectedList.slice();
selectedList.push(this.state.suggestedList[index]);
selectedList.push(this._getFilteredSuggestions()[index]);
this.setState({
selectedList,
suggestedList: [],
Expand Down Expand Up @@ -526,12 +526,7 @@ module.exports = React.createClass({
});
},

render: function() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
const AddressSelector = sdk.getComponent("elements.AddressSelector");
this.scrollElement = null;

_getFilteredSuggestions: function() {
// map addressType => set of addresses to avoid O(n*m) operation
const selectedAddresses = {};
this.state.selectedList.forEach(({address, addressType}) => {
Expand All @@ -540,9 +535,16 @@ module.exports = React.createClass({
});

// Filter out any addresses in the above already selected addresses (matching both type and address)
const filteredSuggestedList = this.state.suggestedList.filter(({address, addressType}) => {
return this.state.suggestedList.filter(({address, addressType}) => {
return !(selectedAddresses[addressType] && selectedAddresses[addressType].has(address));
});
},

render: function() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
const AddressSelector = sdk.getComponent("elements.AddressSelector");
this.scrollElement = null;

const query = [];
// create the invite list
Expand Down Expand Up @@ -574,6 +576,8 @@ module.exports = React.createClass({
</textarea>,
);

const filteredSuggestedList = this._getFilteredSuggestions();

let error;
let addressSelector;
if (this.state.error) {
Expand Down

0 comments on commit 6daf5a1

Please sign in to comment.