Use join_room_by_alias in RoomDirectory
This still doesn't actually cause the room to be joined by alias though, so still need to fix that
This commit is contained in:
parent
f61cfbc542
commit
a030e46c69
|
@ -81,15 +81,15 @@ module.exports = React.createClass({
|
|||
// });
|
||||
},
|
||||
|
||||
showRoom: function(roomIdOrAlias) {
|
||||
showRoom: function(roomId, roomAlias) {
|
||||
// extract the metadata from the publicRooms structure to pass
|
||||
// as out-of-band data to view_room, because we get information
|
||||
// here that we can't get other than by joining the room in some
|
||||
// cases.
|
||||
var room;
|
||||
if (roomIdOrAlias[0] == '!') {
|
||||
if (roomId) {
|
||||
for (var i = 0; i < this.state.publicRooms.length; ++i) {
|
||||
if (this.state.publicRooms[i].room_id == roomIdOrAlias) {
|
||||
if (this.state.publicRooms[i].room_id == roomId) {
|
||||
room = this.state.publicRooms[i];
|
||||
break;
|
||||
}
|
||||
|
@ -97,14 +97,6 @@ module.exports = React.createClass({
|
|||
}
|
||||
var oob_data = {};
|
||||
if (room) {
|
||||
// pluck the alias out of the room data and use it to join the room, as we cannot
|
||||
// really join rooms by ID (the HS has no way to get candidate servers). However,
|
||||
// we still have to do this for room in the public room list that don't have an alias
|
||||
// since this is currently the only choice.
|
||||
// (Note we don't just pass the room alias to this function: we still want to be able to
|
||||
// look up the oob data for which we need the room id).
|
||||
var alias = room.canonical_alias || (room.aliases ? room.aliases[0] : undefined);
|
||||
if (alias) roomIdOrAlias = alias;
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
if (!room.world_readable && !room.guest_can_join) {
|
||||
var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
|
||||
|
@ -124,14 +116,21 @@ module.exports = React.createClass({
|
|||
};
|
||||
}
|
||||
|
||||
// XXX: this interface needs to change to officially accept room IDs
|
||||
// or aliases, rather than it happening to work if you pass an alias
|
||||
// as room_id
|
||||
dis.dispatch({
|
||||
action: 'view_room',
|
||||
room_id: roomIdOrAlias,
|
||||
var payload = {
|
||||
oob_data: oob_data,
|
||||
});
|
||||
};
|
||||
if (roomAlias) {
|
||||
payload.action = 'view_room_alias';
|
||||
payload.room_alias = roomAlias;
|
||||
} else {
|
||||
// It's not really possible to join Matrix rooms by ID because the HS has no way to know
|
||||
// which servers to start querying. However, there's no other way to join rooms in
|
||||
// this list without aliases at present.
|
||||
payload.action = 'view_room';
|
||||
payload.room_id = roomId;
|
||||
}
|
||||
|
||||
dis.dispatch(payload);
|
||||
},
|
||||
|
||||
getRows: function(filter) {
|
||||
|
@ -177,7 +176,7 @@ module.exports = React.createClass({
|
|||
topic = linkifyString(sanitizeHtml(topic));
|
||||
|
||||
rows.unshift(
|
||||
<tr key={ rooms[i].room_id } onClick={self.showRoom.bind(null, rooms[i].room_id)}>
|
||||
<tr key={ rooms[i].room_id } onClick={self.showRoom.bind(null, rooms[i].room_id, alias)}>
|
||||
<td className="mx_RoomDirectory_roomAvatar">
|
||||
<BaseAvatar width={24} height={24} resizeMethod='crop'
|
||||
name={ name } idName={ name }
|
||||
|
@ -206,7 +205,7 @@ module.exports = React.createClass({
|
|||
this.forceUpdate();
|
||||
this.setState({ roomAlias : this.refs.roomAlias.value })
|
||||
if (ev.key == "Enter") {
|
||||
this.showRoom(this.refs.roomAlias.value);
|
||||
this.showRoom(null, this.refs.roomAlias.value);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in New Issue