From 73ba955e344c8ccedd43235495ef8b72b5a2b6fd Mon Sep 17 00:00:00 2001 From: Ricardo Cino Date: Wed, 22 Jun 2022 00:32:18 +0200 Subject: chore: Transform AppStore.js into Typescript (#329) * turn actions into typescript * correct tsconfig * added TypedStore --- src/actions/app.ts | 3 ++- src/actions/lib/actions.ts | 25 ++++++++++++++++++++++++- src/actions/recipe.ts | 3 ++- src/actions/recipePreview.ts | 3 ++- src/actions/requests.ts | 4 +++- src/actions/service.ts | 3 ++- src/actions/settings.ts | 3 ++- src/actions/ui.ts | 3 ++- src/actions/user.ts | 3 ++- 9 files changed, 41 insertions(+), 9 deletions(-) (limited to 'src/actions') diff --git a/src/actions/app.ts b/src/actions/app.ts index e6f7f22ba..a798a8b0b 100644 --- a/src/actions/app.ts +++ b/src/actions/app.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { setBadge: { unreadDirectMessageCount: PropTypes.number.isRequired, unreadIndirectMessageCount: PropTypes.number, diff --git a/src/actions/lib/actions.ts b/src/actions/lib/actions.ts index 412a0d895..378cef574 100644 --- a/src/actions/lib/actions.ts +++ b/src/actions/lib/actions.ts @@ -1,4 +1,27 @@ -export const createActionsFromDefinitions = (actionDefinitions, validate) => { +import PropTypes from 'prop-types'; + +export interface ActionDefinitions { + [key: string]: { + [key: string]: PropTypes.InferType; + }; +} + +export interface Actions { + [key: string]: { + [key: string]: { + (...args: any[]): void; + listeners: Array; + notify: (params: any) => void; + listen: (listener: (params: any) => void) => void; + off: (listener: (params: any) => void) => void; + }; + }; +} + +export const createActionsFromDefinitions = ( + actionDefinitions: ActionDefinitions, + validate: any, +) => { const actions = {}; // eslint-disable-next-line unicorn/no-array-for-each Object.keys(actionDefinitions).forEach(actionName => { diff --git a/src/actions/recipe.ts b/src/actions/recipe.ts index 29b0a151f..0dd92737f 100644 --- a/src/actions/recipe.ts +++ b/src/actions/recipe.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { install: { recipeId: PropTypes.string.isRequired, update: PropTypes.bool, diff --git a/src/actions/recipePreview.ts b/src/actions/recipePreview.ts index 36de3d844..053b363e9 100644 --- a/src/actions/recipePreview.ts +++ b/src/actions/recipePreview.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { search: { needle: PropTypes.string.isRequired, }, diff --git a/src/actions/requests.ts b/src/actions/requests.ts index 89296e7ec..0b4c905ee 100644 --- a/src/actions/requests.ts +++ b/src/actions/requests.ts @@ -1,3 +1,5 @@ -export default { +import { ActionDefinitions } from './lib/actions'; + +export default { retryRequiredRequests: {}, }; diff --git a/src/actions/service.ts b/src/actions/service.ts index aa02c860a..4b43fc2ca 100644 --- a/src/actions/service.ts +++ b/src/actions/service.ts @@ -1,7 +1,8 @@ import PropTypes from 'prop-types'; import ServiceModel from '../models/Service'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { setActive: { serviceId: PropTypes.string.isRequired, keepActiveRoute: PropTypes.bool, diff --git a/src/actions/settings.ts b/src/actions/settings.ts index fd29b798b..4796f6a02 100644 --- a/src/actions/settings.ts +++ b/src/actions/settings.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { update: { type: PropTypes.string.isRequired, data: PropTypes.object.isRequired, diff --git a/src/actions/ui.ts b/src/actions/ui.ts index b913b430b..7d2dbccfa 100644 --- a/src/actions/ui.ts +++ b/src/actions/ui.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { openSettings: { path: PropTypes.string, }, diff --git a/src/actions/user.ts b/src/actions/user.ts index 15a9216bd..c0ede619e 100644 --- a/src/actions/user.ts +++ b/src/actions/user.ts @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; +import { ActionDefinitions } from './lib/actions'; -export default { +export default { login: { email: PropTypes.string.isRequired, password: PropTypes.string.isRequired, -- cgit v1.2.3-54-g00ecf