Merge pull request #2837 from matrix-org/travis/breadcrumbs/persist

Persist breadcrumb state between sessions
This commit is contained in:
Travis Ralston 2019-03-28 10:32:26 -06:00 committed by GitHub
commit 92c99546f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {