Modal: remove support for onFinished callback (#29852)
* Fix up type for `finished` result of Modal The `finished` promise can be called with an empty array, for example if the dialog is closed by a background click. This was not correctly represented in the typing. Fix that, and add some documentation while we're at it. * Type fixes to onFinished callbacks from Modal These can all be called with zero arguments, despite what the type annotations may say, so mark them accordingly. * Remove uses of Modal `onFinished` property ... because it is confusing. Instead, use the `finished` promise returned by `createDialog`. * Modal: remove support for now-unused `onFinished` prop * StopGapWidgetDriver: use `await` instead of promise chaining * Fix up unit tests
This commit is contained in:
@@ -9,6 +9,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
import Modal from "../../src/Modal";
|
||||
import QuestionDialog from "../../src/components/views/dialogs/QuestionDialog";
|
||||
import defaultDispatcher from "../../src/dispatcher/dispatcher";
|
||||
import { flushPromises } from "../test-utils";
|
||||
|
||||
describe("Modal", () => {
|
||||
test("forceCloseAllModals should close all open modals", () => {
|
||||
@@ -23,7 +24,7 @@ describe("Modal", () => {
|
||||
expect(Modal.hasDialogs()).toBe(false);
|
||||
});
|
||||
|
||||
test("open modals should be closed on logout", () => {
|
||||
test("open modals should be closed on logout", async () => {
|
||||
const modal1OnFinished = jest.fn();
|
||||
const modal2OnFinished = jest.fn();
|
||||
|
||||
@@ -31,18 +32,18 @@ describe("Modal", () => {
|
||||
title: "Test dialog 1",
|
||||
description: "This is a test dialog",
|
||||
button: "Word",
|
||||
onFinished: modal1OnFinished,
|
||||
});
|
||||
}).finished.then(modal1OnFinished);
|
||||
|
||||
Modal.createDialog(QuestionDialog, {
|
||||
title: "Test dialog 2",
|
||||
description: "This is a test dialog",
|
||||
button: "Word",
|
||||
onFinished: modal2OnFinished,
|
||||
});
|
||||
}).finished.then(modal2OnFinished);
|
||||
|
||||
defaultDispatcher.dispatch({ action: "logout" }, true);
|
||||
|
||||
await flushPromises();
|
||||
|
||||
expect(modal1OnFinished).toHaveBeenCalled();
|
||||
expect(modal2OnFinished).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user