mirror of
https://github.com/element-hq/element-web
synced 2024-11-27 03:36:07 +03:00
Merge pull request #454 from matrix-org/kegan/get-room-on-first-load
Fix bug whereby refreshing Vector would not allow querying of membership state
This commit is contained in:
commit
2078f81f33
1 changed files with 51 additions and 35 deletions
|
@ -256,6 +256,7 @@ function returnStateEvent(event, roomId, eventType, stateKey) {
|
|||
}
|
||||
|
||||
var currentRoomId = null;
|
||||
var currentRoomAlias = null;
|
||||
|
||||
// Listen for when a room is viewed
|
||||
dis.register(onAction);
|
||||
|
@ -264,6 +265,7 @@ function onAction(payload) {
|
|||
return;
|
||||
}
|
||||
currentRoomId = payload.room_id;
|
||||
currentRoomAlias = payload.room_alias;
|
||||
}
|
||||
|
||||
const onMessage = function(event) {
|
||||
|
@ -287,11 +289,21 @@ const onMessage = function(event) {
|
|||
sendError(event, "Missing room_id in request");
|
||||
return;
|
||||
}
|
||||
let promise = Promise.resolve(currentRoomId);
|
||||
if (!currentRoomId) {
|
||||
if (!currentRoomAlias) {
|
||||
sendError(event, "Must be viewing a room");
|
||||
return;
|
||||
}
|
||||
if (roomId !== currentRoomId) {
|
||||
// no room ID but there is an alias, look it up.
|
||||
console.log("Looking up alias " + currentRoomAlias);
|
||||
promise = MatrixClientPeg.get().getRoomIdForAlias(currentRoomAlias).then((res) => {
|
||||
return res.room_id;
|
||||
});
|
||||
}
|
||||
|
||||
promise.then((viewingRoomId) => {
|
||||
if (roomId !== viewingRoomId) {
|
||||
sendError(event, "Room " + roomId + " not visible");
|
||||
return;
|
||||
}
|
||||
|
@ -326,6 +338,10 @@ const onMessage = function(event) {
|
|||
console.warn("Unhandled postMessage event with action '" + event.data.action +"'");
|
||||
break;
|
||||
}
|
||||
}, (err) => {
|
||||
console.error(err);
|
||||
sendError(event, "Failed to lookup current room.");
|
||||
})
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
|
|
Loading…
Reference in a new issue