Merge pull request #2872 from matrix-org/travis/breadcrumbs/upgrades

Use the most recent version of the room in breadcrumbs
This commit is contained in:
Travis Ralston 2019-04-05 08:12:51 -06:00 committed by GitHub
commit 98b35d106b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -76,9 +76,9 @@ export default class RoomBreadcrumbs extends React.Component {
const rooms = this.state.rooms.slice(); const rooms = this.state.rooms.slice();
if (rooms.length) { if (rooms.length) {
const {room, animated} = rooms[0]; const roomModel = rooms[0];
if (!animated) { if (!roomModel.animated) {
rooms[0] = {room, animated: true}; roomModel.animated = true;
setTimeout(() => this.setState({rooms}), 0); setTimeout(() => this.setState({rooms}), 0);
} }
} }
@ -158,16 +158,31 @@ export default class RoomBreadcrumbs extends React.Component {
} }
_appendRoomId(roomId) { _appendRoomId(roomId) {
const room = MatrixClientPeg.get().getRoom(roomId); let room = MatrixClientPeg.get().getRoom(roomId);
if (!room) { if (!room) return;
return;
}
const rooms = this.state.rooms.slice(); const rooms = this.state.rooms.slice();
// If the room is upgraded, use that room instead. We'll also splice out
// any children of the room.
const history = MatrixClientPeg.get().getRoomUpgradeHistory(roomId);
if (history.length > 1) {
room = history[history.length - 1]; // Last room is most recent
// Take out any room that isn't the most recent room
for (let i = 0; i < history.length - 1; i++) {
const idx = rooms.findIndex((r) => r.room.roomId === history[i].roomId);
if (idx !== -1) rooms.splice(idx, 1);
}
}
const existingIdx = rooms.findIndex((r) => r.room.roomId === room.roomId); const existingIdx = rooms.findIndex((r) => r.room.roomId === room.roomId);
if (existingIdx !== -1) { if (existingIdx !== -1) {
rooms.splice(existingIdx, 1); rooms.splice(existingIdx, 1);
} }
rooms.splice(0, 0, {room, animated: false}); rooms.splice(0, 0, {room, animated: false});
if (rooms.length > MAX_ROOMS) { if (rooms.length > MAX_ROOMS) {
rooms.splice(MAX_ROOMS, rooms.length - MAX_ROOMS); rooms.splice(MAX_ROOMS, rooms.length - MAX_ROOMS);
} }