Don't add toast to history (#8915)

This commit is contained in:
Bram Kragten 2021-04-14 21:01:42 +02:00 committed by GitHub
parent a43120320e
commit aaa50b4d1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 23 deletions

View File

@ -45,7 +45,8 @@ export const showDialog = async (
root: ShadowRoot | HTMLElement,
dialogTag: string,
dialogParams: unknown,
dialogImport?: () => Promise<unknown>
dialogImport?: () => Promise<unknown>,
addHistory = true
) => {
if (!(dialogTag in LOADED)) {
if (!dialogImport) {
@ -59,30 +60,31 @@ export const showDialog = async (
});
}
history.replaceState(
{
dialog: dialogTag,
open: false,
oldState:
history.state?.open && history.state?.dialog !== dialogTag
? history.state
: null,
},
""
);
try {
history.pushState(
{ dialog: dialogTag, dialogParams: dialogParams, open: true },
""
);
} catch (err) {
// dialogParams could not be cloned, probably contains callback
history.pushState(
{ dialog: dialogTag, dialogParams: null, open: true },
if (addHistory) {
history.replaceState(
{
dialog: dialogTag,
open: false,
oldState:
history.state?.open && history.state?.dialog !== dialogTag
? history.state
: null,
},
""
);
try {
history.pushState(
{ dialog: dialogTag, dialogParams: dialogParams, open: true },
""
);
} catch (err) {
// dialogParams could not be cloned, probably contains callback
history.pushState(
{ dialog: dialogTag, dialogParams: null, open: true },
""
);
}
}
const dialogElement = await LOADED[dialogTag];
dialogElement.showDialog(dialogParams);
};

View File

@ -8,6 +8,7 @@ interface RegisterDialogParams {
dialogShowEvent: keyof HASSDomEvents;
dialogTag: keyof HTMLElementTagNameMap;
dialogImport: () => Promise<unknown>;
addHistory?: boolean;
}
declare global {
@ -38,6 +39,7 @@ export const dialogManagerMixin = <T extends Constructor<HassBaseEl>>(
dialogShowEvent,
dialogTag,
dialogImport,
addHistory = true,
}: RegisterDialogParams) {
this.addEventListener(dialogShowEvent, (showEv) => {
showDialog(
@ -45,7 +47,8 @@ export const dialogManagerMixin = <T extends Constructor<HassBaseEl>>(
this.shadowRoot!,
dialogTag,
(showEv as HASSDomEvent<unknown>).detail,
dialogImport
dialogImport,
addHistory
);
});
}

View File

@ -10,6 +10,7 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
dialogShowEvent: "hass-notification",
dialogTag: "notification-manager",
dialogImport: () => import("../managers/notification-manager"),
addHistory: false,
});
}
};