Remove old "click to save" functionality from AliasSettings
parent
750c9202cc
commit
2990cf41e7
|
@ -44,81 +44,25 @@ export default class AliasSettings extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
const aliasState = this.recalculateState(props.aliasEvents, props.canonicalAliasEvent);
|
|
||||||
this.state = Object.assign({newItem: ""}, aliasState);
|
|
||||||
}
|
|
||||||
|
|
||||||
recalculateState(aliasEvents, canonicalAliasEvent) {
|
|
||||||
aliasEvents = aliasEvents || [];
|
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }
|
domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }
|
||||||
remoteDomains: [], // [ domain.com, foobar.com ]
|
remoteDomains: [], // [ domain.com, foobar.com ]
|
||||||
canonicalAlias: null, // #canonical:domain.com
|
canonicalAlias: null, // #canonical:domain.com
|
||||||
updatingCanonicalAlias: false,
|
updatingCanonicalAlias: false,
|
||||||
|
newItem: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
const localDomain = MatrixClientPeg.get().getDomain();
|
const localDomain = MatrixClientPeg.get().getDomain();
|
||||||
|
state.domainToAliases = this.aliasEventsToDictionary(props.aliasEvents || []);
|
||||||
state.domainToAliases = this.aliasEventsToDictionary(aliasEvents);
|
|
||||||
|
|
||||||
state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => {
|
state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => {
|
||||||
return domain !== localDomain && state.domainToAliases[domain].length > 0;
|
return domain !== localDomain && state.domainToAliases[domain].length > 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (canonicalAliasEvent) {
|
if (props.canonicalAliasEvent) {
|
||||||
state.canonicalAlias = canonicalAliasEvent.getContent().alias;
|
state.canonicalAlias = props.canonicalAliasEvent.getContent().alias;
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
this.state = 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aliasEventsToDictionary(aliasEvents) { // m.room.alias events
|
aliasEventsToDictionary(aliasEvents) { // m.room.alias events
|
||||||
|
@ -136,11 +80,6 @@ export default class AliasSettings extends React.Component {
|
||||||
return (alias.match(/^#([^\/:,]+?):(.+)$/) && encodeURI(alias) === alias);
|
return (alias.match(/^#([^\/:,]+?):(.+)$/) && encodeURI(alias) === alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
getAliasOperations() {
|
|
||||||
const oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents);
|
|
||||||
return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);
|
|
||||||
}
|
|
||||||
|
|
||||||
changeCanonicalAlias(alias) {
|
changeCanonicalAlias(alias) {
|
||||||
if (!this.props.canSetCanonicalAlias) return;
|
if (!this.props.canSetCanonicalAlias) return;
|
||||||
|
|
||||||
|
|
|
@ -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) => {
|
_saveGroups = (e) => {
|
||||||
// TODO: Live modification?
|
// TODO: Live modification?
|
||||||
if (!this.refs.flairSettings) return;
|
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>
|
<span className='mx_SettingsTab_subheading'>{_t("Room Addresses")}</span>
|
||||||
<div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'>
|
<div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'>
|
||||||
<AliasSettings ref="aliasSettings" roomId={this.props.roomId}
|
<AliasSettings roomId={this.props.roomId}
|
||||||
canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases}
|
canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases}
|
||||||
canonicalAliasEvent={canonicalAliasEv} aliasEvents={aliasEvents} />
|
canonicalAliasEvent={canonicalAliasEv} aliasEvents={aliasEvents} />
|
||||||
<AccessibleButton onClick={this._saveAliases} kind='primary'>
|
|
||||||
{_t("Save")}
|
|
||||||
</AccessibleButton>
|
|
||||||
</div>
|
</div>
|
||||||
<div className='mx_SettingsTab_section'>
|
<div className='mx_SettingsTab_section'>
|
||||||
<LabelledToggleSwitch value={this.state.isRoomPublished}
|
<LabelledToggleSwitch value={this.state.isRoomPublished}
|
||||||
|
|
Loading…
Reference in New Issue