diff --git a/src/components/views/rooms/RoomBreadcrumbs.js b/src/components/views/rooms/RoomBreadcrumbs.js index 6ea4b3e0ad..d866cdcd18 100644 --- a/src/components/views/rooms/RoomBreadcrumbs.js +++ b/src/components/views/rooms/RoomBreadcrumbs.js @@ -34,6 +34,23 @@ export default class RoomBreadcrumbs extends React.Component { componentWillMount() { this._dispatcherRef = dis.register(this.onAction); + + const roomStr = localStorage.getItem("mx_breadcrumb_rooms"); + if (roomStr) { + try { + const roomIds = JSON.parse(roomStr); + this.setState({ + rooms: roomIds.map((r) => { + return { + room: MatrixClientPeg.get().getRoom(r), + animated: false, + }; + }).filter((r) => r.room), + }); + } catch (e) { + console.error("Failed to parse breadcrumbs:", e); + } + } } componentWillUnmount() { @@ -42,6 +59,7 @@ export default class RoomBreadcrumbs extends React.Component { componentDidUpdate() { const rooms = this.state.rooms.slice(); + if (rooms.length) { const {room, animated} = rooms[0]; if (!animated) { @@ -49,6 +67,9 @@ export default class RoomBreadcrumbs extends React.Component { setTimeout(() => this.setState({rooms}), 0); } } + + const roomStr = JSON.stringify(rooms.map((r) => r.room.roomId)); + localStorage.setItem("mx_breadcrumb_rooms", roomStr); } onAction(payload) {