Remove old "click to save" functionality from AliasSettings

This commit is contained in:
Travis Ralston 2019-02-21 16:27:49 -07:00
parent 750c9202cc
commit 2990cf41e7
2 changed files with 7 additions and 77 deletions

View file

@ -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;

View file

@ -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}