Skip to content

Commit 524e89a

Browse files
wendevlinbramkragten
authored andcommitted
Revert "Use query params instead of path for media browser navigate ids" (#26333)
1 parent 48f6b34 commit 524e89a

File tree

1 file changed

+24
-45
lines changed

1 file changed

+24
-45
lines changed

src/panels/media-browser/ha-panel-media-browser.ts

Lines changed: 24 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -44,38 +44,15 @@ import type { BarMediaPlayer } from "./ha-bar-media-player";
4444
import { showWebBrowserPlayMediaDialog } from "./show-media-player-dialog";
4545

4646
const createMediaPanelUrl = (entityId: string, items: MediaPlayerItemId[]) => {
47-
const path = `/media-browser/${entityId}`;
48-
if (items.length <= 1) {
49-
return path;
47+
let path = `/media-browser/${entityId}`;
48+
for (const item of items.slice(1)) {
49+
path +=
50+
"/" +
51+
encodeURIComponent(`${item.media_content_type},${item.media_content_id}`);
5052
}
51-
const navigateIds = items
52-
.slice(1)
53-
.map((item) =>
54-
encodeURIComponent(`${item.media_content_type},${item.media_content_id}`)
55-
);
56-
const urlparams = new URLSearchParams();
57-
urlparams.set("ids", navigateIds.join(","));
58-
return path + "?" + urlparams.toString();
53+
return path;
5954
};
6055

61-
const decodeNavigateIds = (
62-
navigateIdsEncoded: string[]
63-
): MediaPlayerItemId[] => [
64-
{
65-
media_content_id: undefined,
66-
media_content_type: undefined,
67-
},
68-
...navigateIdsEncoded.map((navigateId) => {
69-
const decoded = decodeURIComponent(navigateId);
70-
// Don't use split because media_content_id could contain commas
71-
const delimiter = decoded.indexOf(",");
72-
return {
73-
media_content_type: decoded.substring(0, delimiter),
74-
media_content_id: decoded.substring(delimiter + 1),
75-
};
76-
}),
77-
];
78-
7956
@customElement("ha-panel-media-browser")
8057
class PanelMediaBrowser extends LitElement {
8158
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -233,19 +210,9 @@ class PanelMediaBrowser extends LitElement {
233210
return;
234211
}
235212

236-
const [routePlayer, ...paths] = this.route.path.substring(1).split("/");
237-
238-
const navigateIdsEncoded =
239-
new URLSearchParams(location.search).get("ids")?.split(",") || [];
240-
241-
// Backwards compatibility with old URLs
242-
if (navigateIdsEncoded.length === 0 && paths.length > 0) {
243-
const navigateIds = decodeNavigateIds(paths);
244-
navigate(createMediaPanelUrl(this._entityId, navigateIds), {
245-
replace: true,
246-
});
247-
return;
248-
}
213+
const [routePlayer, ...navigateIdsEncoded] = this.route.path
214+
.substring(1)
215+
.split("/");
249216

250217
if (routePlayer !== this._entityId) {
251218
// Detect if picked player doesn't exist (anymore)
@@ -268,15 +235,28 @@ class PanelMediaBrowser extends LitElement {
268235
this._entityId = routePlayer;
269236
}
270237

271-
this._navigateIds = decodeNavigateIds(navigateIdsEncoded);
238+
this._navigateIds = [
239+
{
240+
media_content_type: undefined,
241+
media_content_id: undefined,
242+
},
243+
...navigateIdsEncoded.map((navigateId) => {
244+
const decoded = decodeURIComponent(navigateId);
245+
// Don't use split because media_content_id could contain commas
246+
const delimiter = decoded.indexOf(",");
247+
return {
248+
media_content_type: decoded.substring(0, delimiter),
249+
media_content_id: decoded.substring(delimiter + 1),
250+
};
251+
}),
252+
];
272253
this._currentItem = undefined;
273254
}
274255

275256
private _goBack() {
276257
navigate(
277258
createMediaPanelUrl(this._entityId, this._navigateIds.slice(0, -1))
278259
);
279-
this.requestUpdate("route");
280260
}
281261

282262
private _mediaBrowsed(ev: { detail: HASSDomEvents["media-browsed"] }) {
@@ -288,7 +268,6 @@ class PanelMediaBrowser extends LitElement {
288268
navigate(createMediaPanelUrl(this._entityId, ev.detail.ids), {
289269
replace: ev.detail.replace,
290270
});
291-
this.requestUpdate("route");
292271
}
293272

294273
private async _mediaPicked(

0 commit comments

Comments
 (0)