Add entity ID being browsed to URL of media browser (#11164)

This commit is contained in:
Paulus Schoutsen 2022-01-12 10:22:04 -08:00 committed by GitHub
parent ff2fa9a78c
commit 5e388b1f02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,11 +1,19 @@
import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-header/app-header";
import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/app-layout/app-toolbar/app-toolbar";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import {
css,
CSSResultGroup,
html,
LitElement,
PropertyValues,
TemplateResult,
} from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { LocalStorage } from "../../common/decorators/local-storage"; import { LocalStorage } from "../../common/decorators/local-storage";
import { HASSDomEvent } from "../../common/dom/fire_event"; import { HASSDomEvent } from "../../common/dom/fire_event";
import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { computeStateDomain } from "../../common/entity/compute_state_domain";
import { supportsFeature } from "../../common/entity/supports-feature"; import { supportsFeature } from "../../common/entity/supports-feature";
import { navigate } from "../../common/navigate";
import "../../components/ha-menu-button"; import "../../components/ha-menu-button";
import "../../components/media-player/ha-media-player-browse"; import "../../components/media-player/ha-media-player-browse";
import { import {
@ -15,7 +23,7 @@ import {
} from "../../data/media-player"; } from "../../data/media-player";
import "../../layouts/ha-app-layout"; import "../../layouts/ha-app-layout";
import { haStyle } from "../../resources/styles"; import { haStyle } from "../../resources/styles";
import type { HomeAssistant } from "../../types"; import type { HomeAssistant, Route } from "../../types";
import { showWebBrowserPlayMediaDialog } from "./show-media-player-dialog"; import { showWebBrowserPlayMediaDialog } from "./show-media-player-dialog";
import { showSelectMediaPlayerDialog } from "./show-select-media-source-dialog"; import { showSelectMediaPlayerDialog } from "./show-select-media-source-dialog";
@ -26,6 +34,8 @@ class PanelMediaBrowser extends LitElement {
@property({ type: Boolean, reflect: true }) @property({ type: Boolean, reflect: true })
public narrow!: boolean; public narrow!: boolean;
@property() public route!: Route;
// @ts-ignore // @ts-ignore
@LocalStorage("mediaBrowseEntityId", true) @LocalStorage("mediaBrowseEntityId", true)
private _entityId = BROWSER_PLAYER; private _entityId = BROWSER_PLAYER;
@ -74,11 +84,29 @@ class PanelMediaBrowser extends LitElement {
`; `;
} }
public updated(changedProps: PropertyValues): void {
super.updated(changedProps);
if (!changedProps.has("route")) {
return;
}
if (this.route.path === "") {
navigate(`/media-browser/${this._entityId}`, { replace: true });
return;
}
const routePlayer = this.route.path.substring(1).split("/")[0];
if (routePlayer !== this._entityId) {
this._entityId = routePlayer;
}
}
private _showSelectMediaPlayerDialog(): void { private _showSelectMediaPlayerDialog(): void {
showSelectMediaPlayerDialog(this, { showSelectMediaPlayerDialog(this, {
mediaSources: this._mediaPlayerEntities, mediaSources: this._mediaPlayerEntities,
sourceSelectedCallback: (entityId) => { sourceSelectedCallback: (entityId) => {
this._entityId = entityId; navigate(`/media-browser/${entityId}`, { replace: true });
}, },
}); });
} }