From 8c72c27da9afe371e15f2f010d61fe4608c788c1 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 13 May 2020 20:46:00 -0600 Subject: [PATCH] Break out actions and payloads to their own files The definitions take up a lot of space which makes it hard to see the dispatcher class, so break them out. --- src/actions/RoomListActions.ts | 2 +- src/actions/TagOrderActions.ts | 2 +- src/actions/actionCreators.ts | 2 +- src/dispatcher/actions.ts | 23 +++++++++++++ src/dispatcher/dispatcher.ts | 51 ++--------------------------- src/dispatcher/payloads.ts | 59 ++++++++++++++++++++++++++++++++++ 6 files changed, 87 insertions(+), 52 deletions(-) create mode 100644 src/dispatcher/actions.ts create mode 100644 src/dispatcher/payloads.ts diff --git a/src/actions/RoomListActions.ts b/src/actions/RoomListActions.ts index 0cdd3a86d8..eb9831ec47 100644 --- a/src/actions/RoomListActions.ts +++ b/src/actions/RoomListActions.ts @@ -23,7 +23,7 @@ import { _t } from '../languageHandler'; import * as sdk from '../index'; import { MatrixClient } from "matrix-js-sdk/src/client"; import { Room } from "matrix-js-sdk/src/models/room"; -import { AsyncActionPayload } from "../dispatcher/dispatcher"; +import { AsyncActionPayload } from "../dispatcher/payloads"; export default class RoomListActions { /** diff --git a/src/actions/TagOrderActions.ts b/src/actions/TagOrderActions.ts index fa86e3a6b1..fa95ea1037 100644 --- a/src/actions/TagOrderActions.ts +++ b/src/actions/TagOrderActions.ts @@ -18,7 +18,7 @@ limitations under the License. import Analytics from '../Analytics'; import { asyncAction } from './actionCreators'; import TagOrderStore from '../stores/TagOrderStore'; -import { AsyncActionPayload } from "../dispatcher/dispatcher"; +import { AsyncActionPayload } from "../dispatcher/payloads"; import { MatrixClient } from "matrix-js-sdk/src/client"; export default class TagOrderActions { diff --git a/src/actions/actionCreators.ts b/src/actions/actionCreators.ts index 78525a9509..d84868a141 100644 --- a/src/actions/actionCreators.ts +++ b/src/actions/actionCreators.ts @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { AsyncActionPayload } from "../dispatcher/dispatcher"; +import { AsyncActionPayload } from "../dispatcher/payloads"; /** * Create an action thunk that will dispatch actions indicating the current diff --git a/src/dispatcher/actions.ts b/src/dispatcher/actions.ts new file mode 100644 index 0000000000..ff1650e4e5 --- /dev/null +++ b/src/dispatcher/actions.ts @@ -0,0 +1,23 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Dispatcher actions also extend into any arbitrary string, so support that. +export type DispatcherAction = Action | string; + +export enum Action { + // TODO: Populate with actual actions +} + diff --git a/src/dispatcher/dispatcher.ts b/src/dispatcher/dispatcher.ts index fce99df055..6ef165c485 100644 --- a/src/dispatcher/dispatcher.ts +++ b/src/dispatcher/dispatcher.ts @@ -17,55 +17,8 @@ limitations under the License. */ import { Dispatcher } from "flux"; - -export enum Action { - // TODO: Populate with actual actions -} - -// Dispatcher actions also extend into any arbitrary string, so support that. -export type DispatcherAction = Action | string; - -/** - * 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; - } -} +import { Action } from "./actions"; +import { ActionPayload, AsyncActionPayload } from "./payloads"; /** * A dispatcher for ActionPayloads (the default within the SDK). diff --git a/src/dispatcher/payloads.ts b/src/dispatcher/payloads.ts new file mode 100644 index 0000000000..fa45b30623 --- /dev/null +++ b/src/dispatcher/payloads.ts @@ -0,0 +1,59 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +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; + } +}