Notify user of error if confirmation dialog rejects promise (#3179)

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton authored and GitHub committed 2021-08-03 10:09:19 -04:00
1 parent 02320a5d2c
commit 2893ad956d
1 file changed
+17 -2
@@ -28,6 +28,7 @@ import { cssNames, noop, prevDefault } from "../../utils";
import { Button, ButtonProps } from "../button";
import { Dialog, DialogProps } from "../dialog";
import { Icon } from "../icon";
import { Notifications } from "../notifications";
export interface ConfirmDialogProps extends Partial<DialogProps> {
}
@@ -90,7 +91,14 @@ export class ConfirmDialog extends React.Component<ConfirmDialogProps> {
ok = async () => {
try {
this.isSaving = true;
await Promise.resolve(this.params.ok()).catch(noop);
await (async () => this.params.ok())();
} catch (error) {
Notifications.error(
<>
<p>Confirmation action failed:</p>
<p>{error?.message ?? error?.toString?.() ?? "Unknown error"}</p>
</>
);
} finally {
this.isSaving = false;
dialogState.isOpen = false;
@@ -103,7 +111,14 @@ export class ConfirmDialog extends React.Component<ConfirmDialogProps> {
close = async () => {
try {
await Promise.resolve(this.params.cancel()).catch(noop);
await Promise.resolve(this.params.cancel());
} catch (error) {
Notifications.error(
<>
<p>Cancelling action failed:</p>
<p>{error?.message ?? error?.toString?.() ?? "Unknown error"}</p>
</>
);
} finally {
this.isSaving = false;
dialogState.isOpen = false;