check server feature flag
if not available, revert to old behavior
This commit is contained in:
parent
e6ca581f10
commit
4c9c57bfe5
2 changed files with 38 additions and 19 deletions
|
@ -94,12 +94,6 @@ export default class AliasSettings extends React.Component {
|
||||||
};
|
};
|
||||||
|
|
||||||
if (props.canonicalAliasEvent) {
|
if (props.canonicalAliasEvent) {
|
||||||
const cli = MatrixClientPeg.get();
|
|
||||||
const localDomain = cli.getDomain();
|
|
||||||
state.domainToAliases = this.aliasesToDictionary(this._getAltAliases());
|
|
||||||
state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => {
|
|
||||||
return domain !== localDomain && state.domainToAliases[domain].length > 0;
|
|
||||||
});
|
|
||||||
state.canonicalAlias = props.canonicalAliasEvent.getContent().alias;
|
state.canonicalAlias = props.canonicalAliasEvent.getContent().alias;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,15 +102,29 @@ export default class AliasSettings extends React.Component {
|
||||||
|
|
||||||
async componentWillMount() {
|
async componentWillMount() {
|
||||||
const cli = MatrixClientPeg.get();
|
const cli = MatrixClientPeg.get();
|
||||||
const response = await cli.getLocalAliases(this.props.roomId);
|
if (await cli.doesServerSupportUnstableFeature("org.matrix.msc2432")) {
|
||||||
const localAliases = response.aliases;
|
const response = await cli.unstableGetLocalAliases(this.props.roomId);
|
||||||
const localDomain = cli.getDomain();
|
const localAliases = response.aliases;
|
||||||
const domainToAliases = Object.assign(
|
const localDomain = cli.getDomain();
|
||||||
{},
|
const domainToAliases = Object.assign(
|
||||||
this.state.domainToAliases,
|
{},
|
||||||
{[localDomain]: localAliases || []},
|
// FIXME, any localhost alt_aliases will be ignored as they are overwritten by localAliases
|
||||||
);
|
this.aliasesToDictionary(this._getAltAliases()),
|
||||||
this.setState({ domainToAliases });
|
{[localDomain]: localAliases || []},
|
||||||
|
);
|
||||||
|
const remoteDomains = Object.keys(domainToAliases).filter((domain) => {
|
||||||
|
return domain !== localDomain && domainToAliases[domain].length > 0;
|
||||||
|
});
|
||||||
|
this.setState({ domainToAliases, remoteDomains });
|
||||||
|
} else {
|
||||||
|
const state = {};
|
||||||
|
const localDomain = cli.getDomain();
|
||||||
|
state.domainToAliases = this.aliasEventsToDictionary(this.props.aliasEvents || []);
|
||||||
|
state.remoteDomains = Object.keys(state.domainToAliases).filter((domain) => {
|
||||||
|
return domain !== localDomain && state.domainToAliases[domain].length > 0;
|
||||||
|
});
|
||||||
|
this.setState(state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aliasesToDictionary(aliases) {
|
aliasesToDictionary(aliases) {
|
||||||
|
@ -128,6 +136,16 @@ export default class AliasSettings extends React.Component {
|
||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aliasEventsToDictionary(aliasEvents) { // m.room.alias events
|
||||||
|
const dict = {};
|
||||||
|
aliasEvents.forEach((event) => {
|
||||||
|
dict[event.getStateKey()] = (
|
||||||
|
(event.getContent().aliases || []).slice() // shallow-copy
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
|
||||||
_getAltAliases() {
|
_getAltAliases() {
|
||||||
if (this.props.canonicalAliasEvent) {
|
if (this.props.canonicalAliasEvent) {
|
||||||
const altAliases = this.props.canonicalAliasEvent.getContent().alt_aliases;
|
const altAliases = this.props.canonicalAliasEvent.getContent().alt_aliases;
|
||||||
|
@ -146,9 +164,9 @@ export default class AliasSettings extends React.Component {
|
||||||
updatingCanonicalAlias: true,
|
updatingCanonicalAlias: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const eventContent = {
|
const eventContent = {};
|
||||||
alt_aliases: this._getAltAliases(),
|
const altAliases = this._getAltAliases();
|
||||||
};
|
if (altAliases) eventContent["alt_aliases"] = altAliases;
|
||||||
if (alias) eventContent["alias"] = alias;
|
if (alias) eventContent["alias"] = alias;
|
||||||
|
|
||||||
MatrixClientPeg.get().sendStateEvent(this.props.roomId, "m.room.canonical_alias",
|
MatrixClientPeg.get().sendStateEvent(this.props.roomId, "m.room.canonical_alias",
|
||||||
|
|
|
@ -78,6 +78,7 @@ export default class GeneralRoomSettingsTab extends React.Component {
|
||||||
const canActuallySetAliases = room.currentState.mayClientSendStateEvent("m.room.aliases", client);
|
const canActuallySetAliases = room.currentState.mayClientSendStateEvent("m.room.aliases", client);
|
||||||
const canSetCanonical = room.currentState.mayClientSendStateEvent("m.room.canonical_alias", client);
|
const canSetCanonical = room.currentState.mayClientSendStateEvent("m.room.canonical_alias", client);
|
||||||
const canonicalAliasEv = room.currentState.getStateEvents("m.room.canonical_alias", '');
|
const canonicalAliasEv = room.currentState.getStateEvents("m.room.canonical_alias", '');
|
||||||
|
const aliasEvents = room.currentState.getStateEvents("m.room.aliases");
|
||||||
|
|
||||||
const canChangeGroups = room.currentState.mayClientSendStateEvent("m.room.related_groups", client);
|
const canChangeGroups = room.currentState.mayClientSendStateEvent("m.room.related_groups", client);
|
||||||
const groupsEvent = room.currentState.getStateEvents("m.room.related_groups", "");
|
const groupsEvent = room.currentState.getStateEvents("m.room.related_groups", "");
|
||||||
|
@ -93,7 +94,7 @@ export default class GeneralRoomSettingsTab extends React.Component {
|
||||||
<div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'>
|
<div className='mx_SettingsTab_section mx_SettingsTab_subsectionText'>
|
||||||
<AliasSettings roomId={this.props.roomId}
|
<AliasSettings roomId={this.props.roomId}
|
||||||
canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases}
|
canSetCanonicalAlias={canSetCanonical} canSetAliases={canSetAliases}
|
||||||
canonicalAliasEvent={canonicalAliasEv} />
|
canonicalAliasEvent={canonicalAliasEv} aliasEvents={aliasEvents} />
|
||||||
</div>
|
</div>
|
||||||
<div className='mx_SettingsTab_section'>
|
<div className='mx_SettingsTab_section'>
|
||||||
<LabelledToggleSwitch value={this.state.isRoomPublished}
|
<LabelledToggleSwitch value={this.state.isRoomPublished}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue