diff --git a/src/components/views/room_settings/AliasSettings.js b/src/components/views/room_settings/AliasSettings.js index ee4fc73593..d6a6b608e2 100644 --- a/src/components/views/room_settings/AliasSettings.js +++ b/src/components/views/room_settings/AliasSettings.js @@ -44,81 +44,25 @@ export default class AliasSettings extends React.Component { constructor(props) { super(props); - const aliasState = this.recalculateState(props.aliasEvents, props.canonicalAliasEvent); - this.state = Object.assign({newItem: ""}, aliasState); - } - - recalculateState(aliasEvents, canonicalAliasEvent) { - aliasEvents = aliasEvents || []; - const state = { domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] } remoteDomains: [], // [ domain.com, foobar.com ] canonicalAlias: null, // #canonical:domain.com updatingCanonicalAlias: false, + newItem: "", }; + const localDomain = MatrixClientPeg.get().getDomain(); - - state.domainToAliases = this.aliasEventsToDictionary(aliasEvents); - + state.domainToAliases = this.aliasEventsToDictionary(props.aliasEvents || []); state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => { return domain !== localDomain && state.domainToAliases[domain].length > 0; }); - if (canonicalAliasEvent) { - state.canonicalAlias = canonicalAliasEvent.getContent().alias; + if (props.canonicalAliasEvent) { + state.canonicalAlias = props.canonicalAliasEvent.getContent().alias; } - return state; - } - - saveSettings() { - let promises = []; - - // save new aliases for m.room.aliases - const aliasOperations = this.getAliasOperations(); - for (let i = 0; i < aliasOperations.length; i++) { - const alias_operation = aliasOperations[i]; - console.log("alias %s %s", alias_operation.place, alias_operation.val); - switch (alias_operation.place) { - case 'add': - promises.push( - MatrixClientPeg.get().createAlias( - alias_operation.val, this.props.roomId, - ), - ); - break; - case 'del': - promises.push( - MatrixClientPeg.get().deleteAlias( - alias_operation.val, - ), - ); - break; - default: - console.log("Unknown alias operation, ignoring: " + alias_operation.place); - } - } - - let oldCanonicalAlias = null; - if (this.props.canonicalAliasEvent) { - oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias; - } - - const newCanonicalAlias = this.state.canonicalAlias; - - if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) { - console.log("AliasSettings: Updating canonical alias"); - promises = [Promise.all(promises).then( - MatrixClientPeg.get().sendStateEvent( - this.props.roomId, "m.room.canonical_alias", { - alias: newCanonicalAlias, - }, "", - ), - )]; - } - - return promises; + this.state = state; } aliasEventsToDictionary(aliasEvents) { // m.room.alias events @@ -136,11 +80,6 @@ export default class AliasSettings extends React.Component { return (alias.match(/^#([^\/:,]+?):(.+)$/) && encodeURI(alias) === alias); } - getAliasOperations() { - const oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents); - return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases); - } - changeCanonicalAlias(alias) { if (!this.props.canSetCanonicalAlias) return; diff --git a/src/components/views/settings/tabs/GeneralRoomSettingsTab.js b/src/components/views/settings/tabs/GeneralRoomSettingsTab.js index 75373a69bc..0ce2c174e4 100644 --- a/src/components/views/settings/tabs/GeneralRoomSettingsTab.js +++ b/src/components/views/settings/tabs/GeneralRoomSettingsTab.js @@ -68,12 +68,6 @@ export default class GeneralRoomSettingsTab extends React.Component { }); }; - _saveAliases = (e) => { - // TODO: Live modification? - if (!this.refs.aliasSettings) return; - this.refs.aliasSettings.saveSettings(); - }; - _saveGroups = (e) => { // TODO: Live modification? if (!this.refs.flairSettings) return; @@ -113,12 +107,9 @@ export default class GeneralRoomSettingsTab extends React.Component { <span className='mx_SettingsTab_subheading'>{_t("Room Addresses")}</span> <div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'> - <AliasSettings ref="aliasSettings" roomId={this.props.roomId} + <AliasSettings roomId={this.props.roomId} canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases} canonicalAliasEvent={canonicalAliasEv} aliasEvents={aliasEvents} /> - <AccessibleButton onClick={this._saveAliases} kind='primary'> - {_t("Save")} - </AccessibleButton> </div> <div className='mx_SettingsTab_section'> <LabelledToggleSwitch value={this.state.isRoomPublished}