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 thatpull/1615/head
							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
	
	 David Baker
						David Baker