Merge pull request #4089 from matrix-org/bwindels/fixnoaliasesforpublicroom
also detect aliases using new /aliases endpoint for room access settings
This commit is contained in:
commit
5b8551df1f
1 changed files with 19 additions and 4 deletions
|
@ -36,11 +36,12 @@ export default class SecurityRoomSettingsTab extends React.Component {
|
||||||
joinRule: "invite",
|
joinRule: "invite",
|
||||||
guestAccess: "can_join",
|
guestAccess: "can_join",
|
||||||
history: "shared",
|
history: "shared",
|
||||||
|
hasAliases: false,
|
||||||
encrypted: false,
|
encrypted: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillMount(): void {
|
async componentWillMount(): void {
|
||||||
MatrixClientPeg.get().on("RoomState.events", this._onStateEvent);
|
MatrixClientPeg.get().on("RoomState.events", this._onStateEvent);
|
||||||
|
|
||||||
const room = MatrixClientPeg.get().getRoom(this.props.roomId);
|
const room = MatrixClientPeg.get().getRoom(this.props.roomId);
|
||||||
|
@ -63,6 +64,8 @@ export default class SecurityRoomSettingsTab extends React.Component {
|
||||||
);
|
);
|
||||||
const encrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.roomId);
|
const encrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.roomId);
|
||||||
this.setState({joinRule, guestAccess, history, encrypted});
|
this.setState({joinRule, guestAccess, history, encrypted});
|
||||||
|
const hasAliases = await this._hasAliases();
|
||||||
|
this.setState({hasAliases});
|
||||||
}
|
}
|
||||||
|
|
||||||
_pullContentPropertyFromEvent(event, key, defaultValue) {
|
_pullContentPropertyFromEvent(event, key, defaultValue) {
|
||||||
|
@ -201,13 +204,25 @@ export default class SecurityRoomSettingsTab extends React.Component {
|
||||||
MatrixClientPeg.get().getRoom(this.props.roomId).setBlacklistUnverifiedDevices(checked);
|
MatrixClientPeg.get().getRoom(this.props.roomId).setBlacklistUnverifiedDevices(checked);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async _hasAliases() {
|
||||||
|
const cli = MatrixClientPeg.get();
|
||||||
|
if (await cli.doesServerSupportUnstableFeature("org.matrix.msc2432")) {
|
||||||
|
const response = await cli.unstableGetLocalAliases(this.props.roomId);
|
||||||
|
const localAliases = response.aliases;
|
||||||
|
return Array.isArray(localAliases) && localAliases.length !== 0;
|
||||||
|
} else {
|
||||||
|
const room = cli.getRoom(this.props.roomId);
|
||||||
|
const aliasEvents = room.currentState.getStateEvents("m.room.aliases") || [];
|
||||||
|
const hasAliases = !!aliasEvents.find((ev) => (ev.getContent().aliases || []).length > 0);
|
||||||
|
return hasAliases;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_renderRoomAccess() {
|
_renderRoomAccess() {
|
||||||
const client = MatrixClientPeg.get();
|
const client = MatrixClientPeg.get();
|
||||||
const room = client.getRoom(this.props.roomId);
|
const room = client.getRoom(this.props.roomId);
|
||||||
const joinRule = this.state.joinRule;
|
const joinRule = this.state.joinRule;
|
||||||
const guestAccess = this.state.guestAccess;
|
const guestAccess = this.state.guestAccess;
|
||||||
const aliasEvents = room.currentState.getStateEvents("m.room.aliases") || [];
|
|
||||||
const hasAliases = !!aliasEvents.find((ev) => (ev.getContent().aliases || []).length > 0);
|
|
||||||
|
|
||||||
const canChangeAccess = room.currentState.mayClientSendStateEvent("m.room.join_rules", client)
|
const canChangeAccess = room.currentState.mayClientSendStateEvent("m.room.join_rules", client)
|
||||||
&& room.currentState.mayClientSendStateEvent("m.room.guest_access", client);
|
&& room.currentState.mayClientSendStateEvent("m.room.guest_access", client);
|
||||||
|
@ -226,7 +241,7 @@ export default class SecurityRoomSettingsTab extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
let aliasWarning = null;
|
let aliasWarning = null;
|
||||||
if (joinRule === 'public' && !hasAliases) {
|
if (joinRule === 'public' && !this.state.hasAliases) {
|
||||||
aliasWarning = (
|
aliasWarning = (
|
||||||
<div className='mx_SecurityRoomSettingsTab_warning'>
|
<div className='mx_SecurityRoomSettingsTab_warning'>
|
||||||
<img src={require("../../../../../../res/img/warning.svg")} width={15} height={15} />
|
<img src={require("../../../../../../res/img/warning.svg")} width={15} height={15} />
|
||||||
|
|
Loading…
Reference in a new issue