Implement updated open dialog method of the Module API (#11395)
* Implement updated open dialog method Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> * Apply the review comments Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> * Add unit tests for the module system dialog Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> * Bump @matrix-org/react-sdk-module-api from 1.0.0 to 2.0.0 Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> * Run prettier Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> * Apply review comments Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net> --------- Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
This commit is contained in:
parent
3a647229ad
commit
5c43054bfe
7 changed files with 299 additions and 129 deletions
|
@ -22,6 +22,7 @@ import React from "react";
|
|||
import { AccountAuthInfo } from "@matrix-org/react-sdk-module-api/lib/types/AccountAuthInfo";
|
||||
import * as Matrix from "matrix-js-sdk/src/matrix";
|
||||
import { IRegisterRequestParams } from "matrix-js-sdk/src/matrix";
|
||||
import { ModuleUiDialogOptions } from "@matrix-org/react-sdk-module-api/lib/types/ModuleUiDialogOptions";
|
||||
|
||||
import Modal from "../Modal";
|
||||
import { _t } from "../languageHandler";
|
||||
|
@ -81,21 +82,21 @@ export class ProxiedModuleApi implements ModuleApi {
|
|||
* @override
|
||||
*/
|
||||
public openDialog<M extends object, P extends DialogProps, C extends DialogContent<P>>(
|
||||
title: string,
|
||||
initialTitleOrOptions: string | ModuleUiDialogOptions,
|
||||
body: (props: P, ref: React.RefObject<C>) => React.ReactNode,
|
||||
props?: Omit<P, keyof DialogProps>,
|
||||
): Promise<{ didOkOrSubmit: boolean; model: M }> {
|
||||
const initialOptions: ModuleUiDialogOptions =
|
||||
typeof initialTitleOrOptions === "string" ? { title: initialTitleOrOptions } : initialTitleOrOptions;
|
||||
|
||||
return new Promise<{ didOkOrSubmit: boolean; model: M }>((resolve) => {
|
||||
Modal.createDialog(
|
||||
ModuleUiDialog<P, C>,
|
||||
{
|
||||
title: title,
|
||||
initialOptions,
|
||||
contentFactory: body,
|
||||
// Typescript isn't very happy understanding that `props` satisfies `Omit<P, keyof DialogProps>`
|
||||
contentProps: {
|
||||
...props,
|
||||
moduleApi: this,
|
||||
} as unknown as P,
|
||||
moduleApi: this,
|
||||
additionalContentProps: props,
|
||||
},
|
||||
"mx_CompoundDialog",
|
||||
).finished.then(([didOkOrSubmit, model]) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue