Merge pull request #1290 from matrix-org/luke/fix-user-url-no-middle-panel
At /user, view member of current room
This commit is contained in:
commit
02217c8bd2
2 changed files with 36 additions and 12 deletions
|
@ -301,13 +301,13 @@ export default React.createClass({
|
||||||
|
|
||||||
case PageTypes.UserView:
|
case PageTypes.UserView:
|
||||||
page_element = null; // deliberately null for now
|
page_element = null; // deliberately null for now
|
||||||
right_panel = <RightPanel userId={this.props.viewUserId} opacity={this.props.rightOpacity} />;
|
right_panel = <RightPanel opacity={this.props.rightOpacity} />;
|
||||||
break;
|
break;
|
||||||
case PageTypes.GroupView:
|
case PageTypes.GroupView:
|
||||||
page_element = <GroupView
|
page_element = <GroupView
|
||||||
groupId={this.props.currentGroupId}
|
groupId={this.props.currentGroupId}
|
||||||
/>;
|
/>;
|
||||||
//right_panel = <RightPanel userId={this.props.viewUserId} opacity={this.props.rightOpacity} />;
|
//right_panel = <RightPanel opacity={this.props.rightOpacity} />;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -448,6 +448,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
this.notifyNewScreen('user/' + payload.member.userId);
|
||||||
break;
|
break;
|
||||||
case 'view_room':
|
case 'view_room':
|
||||||
// Takes either a room ID or room alias: if switching to a room the client is already
|
// Takes either a room ID or room alias: if switching to a room the client is already
|
||||||
|
@ -1203,21 +1204,44 @@ module.exports = React.createClass({
|
||||||
} else if (screen.indexOf('user/') == 0) {
|
} else if (screen.indexOf('user/') == 0) {
|
||||||
const userId = screen.substring(5);
|
const userId = screen.substring(5);
|
||||||
|
|
||||||
if (params.action === 'chat') {
|
// Wait for the first sync so that `getRoom` gives us a room object if it's
|
||||||
this._chatCreateOrReuse(userId);
|
// in the sync response
|
||||||
return;
|
const waitFor = this.firstSyncPromise ?
|
||||||
}
|
this.firstSyncPromise.promise : Promise.resolve();
|
||||||
|
waitFor.then(() => {
|
||||||
|
if (params.action === 'chat') {
|
||||||
|
this._chatCreateOrReuse(userId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({ viewUserId: userId });
|
// Get the member object for the current room, if a current room is set or
|
||||||
this._setPage(PageTypes.UserView);
|
// we have a last_room in localStorage. The user might not be a member of
|
||||||
this.notifyNewScreen('user/' + userId);
|
// this room (in which case member will be falsey).
|
||||||
const member = new Matrix.RoomMember(null, userId);
|
let member;
|
||||||
if (member) {
|
const roomId = this.state.currentRoomId || localStorage.getItem('mx_last_room_id');
|
||||||
|
if (roomId) {
|
||||||
|
const room = MatrixClientPeg.get().getRoom(roomId);
|
||||||
|
if (room) {
|
||||||
|
member = room.getMember(userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member) {
|
||||||
|
// This user is a member of this room, so view the room
|
||||||
|
dis.dispatch({
|
||||||
|
action: 'view_room',
|
||||||
|
room_id: roomId,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// This user is not a member of this room, show the user view
|
||||||
|
member = new Matrix.RoomMember(null, userId);
|
||||||
|
this._setPage(PageTypes.UserView);
|
||||||
|
}
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'view_user',
|
action: 'view_user',
|
||||||
member: member,
|
member: member,
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
} else if (screen.indexOf('group/') == 0) {
|
} else if (screen.indexOf('group/') == 0) {
|
||||||
const groupId = screen.substring(6);
|
const groupId = screen.substring(6);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue