matrix-react-sdk
Version:
SDK for matrix.org using React
52 lines (44 loc) • 1.48 kB
text/typescript
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
import { DispatcherAction } from "./actions";
/**
* The base dispatch type exposed by our dispatcher.
*/
export interface ActionPayload {
[property: string]: any; // effectively makes this 'extends Object'
action: DispatcherAction;
}
/**
* The function the dispatcher calls when ready for an AsyncActionPayload. The
* single argument is used to start a dispatch. First the dispatcher calls the
* outer function, then when the called function is ready it calls the cb
* function to issue the dispatch. It may call the callback repeatedly if needed.
*/
export type AsyncActionFn = (cb: (action: ActionPayload) => void) => void;
/**
* An async version of ActionPayload
*/
export class AsyncActionPayload implements ActionPayload {
/**
* The function the dispatcher should call.
*/
public readonly fn: AsyncActionFn;
/**
* @deprecated Not used on AsyncActionPayload.
*/
public get action(): DispatcherAction {
return "NOT_USED";
}
/**
* Create a new AsyncActionPayload with the given ready function.
* @param {AsyncActionFn} readyFn The function to be called when the
* dispatcher is ready.
*/
public constructor(readyFn: AsyncActionFn) {
this.fn = readyFn;
}
}