mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-16 05:46:35 +00:00
Prevent race in dialog box (#23758)
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com> Co-authored-by: Wendelin <12148533+wendevlin@users.noreply.github.com>
This commit is contained in:
parent
e5d2f2d94b
commit
05bd70dd64
@ -26,7 +26,14 @@ class DialogBox extends LitElement {
|
||||
|
||||
@query("ha-md-dialog") private _dialog?: HaMdDialog;
|
||||
|
||||
private _closePromise?: Promise<void>;
|
||||
|
||||
private _closeResolve?: () => void;
|
||||
|
||||
public async showDialog(params: DialogBoxParams): Promise<void> {
|
||||
if (this._closePromise) {
|
||||
await this._closePromise;
|
||||
}
|
||||
this._params = params;
|
||||
}
|
||||
|
||||
@ -131,21 +138,24 @@ class DialogBox extends LitElement {
|
||||
|
||||
private _dismiss(): void {
|
||||
this._closeState = "canceled";
|
||||
this._closeDialog();
|
||||
this._cancel();
|
||||
this._closeDialog();
|
||||
}
|
||||
|
||||
private _confirm(): void {
|
||||
this._closeState = "confirmed";
|
||||
this._closeDialog();
|
||||
if (this._params!.confirm) {
|
||||
this._params!.confirm(this._textField?.value);
|
||||
}
|
||||
this._closeDialog();
|
||||
}
|
||||
|
||||
private _closeDialog() {
|
||||
fireEvent(this, "dialog-closed", { dialog: this.localName });
|
||||
this._dialog?.close();
|
||||
this._closePromise = new Promise((resolve) => {
|
||||
this._closeResolve = resolve;
|
||||
});
|
||||
}
|
||||
|
||||
private _dialogClosed() {
|
||||
@ -155,6 +165,8 @@ class DialogBox extends LitElement {
|
||||
}
|
||||
this._closeState = undefined;
|
||||
this._params = undefined;
|
||||
this._closeResolve?.();
|
||||
this._closeResolve = undefined;
|
||||
}
|
||||
|
||||
static styles = css`
|
||||
|
Loading…
x
Reference in New Issue
Block a user