aboutsummaryrefslogtreecommitdiffstats
path: root/src/actions
diff options
context:
space:
mode:
authorLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-03-12 13:33:37 +0100
committerLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-03-12 13:33:37 +0100
commitf4f7983315c52f01d55af2ced7c70237ae2a0af1 (patch)
treea269f125185eca89419c02f26a590307ab63adee /src/actions
parentMerge pull request #1329 from meetfranz/fix/windows-copy-paste (diff)
downloadferdium-app-f4f7983315c52f01d55af2ced7c70237ae2a0af1.tar.gz
ferdium-app-f4f7983315c52f01d55af2ced7c70237ae2a0af1.tar.zst
ferdium-app-f4f7983315c52f01d55af2ced7c70237ae2a0af1.zip
add useful helpers for building standalone app features
Diffstat (limited to 'src/actions')
-rw-r--r--src/actions/lib/actions.js29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/actions/lib/actions.js b/src/actions/lib/actions.js
index 499018d70..6571e9441 100644
--- a/src/actions/lib/actions.js
+++ b/src/actions/lib/actions.js
@@ -1,18 +1,23 @@
1export const createActionsFromDefinitions = (actionDefinitions, validate) => {
2 const actions = {};
3 Object.keys(actionDefinitions).forEach((actionName) => {
4 const action = (params) => {
5 const schema = actionDefinitions[actionName];
6 validate(schema, params, actionName);
7 action.notify(params);
8 };
9 actions[actionName] = action;
10 action.listeners = [];
11 action.listen = listener => action.listeners.push(listener);
12 action.notify = params => action.listeners.forEach(listener => listener(params));
13 });
14 return actions;
15};
16
1export default (definitions, validate) => { 17export default (definitions, validate) => {
2 const newActions = {}; 18 const newActions = {};
3 Object.keys(definitions).forEach((scopeName) => { 19 Object.keys(definitions).forEach((scopeName) => {
4 newActions[scopeName] = {}; 20 newActions[scopeName] = createActionsFromDefinitions(definitions[scopeName], validate);
5 Object.keys(definitions[scopeName]).forEach((actionName) => {
6 const action = (params) => {
7 const schema = definitions[scopeName][actionName];
8 validate(schema, params, actionName);
9 action.notify(params);
10 };
11 newActions[scopeName][actionName] = action;
12 action.listeners = [];
13 action.listen = listener => action.listeners.push(listener);
14 action.notify = params => action.listeners.forEach(listener => listener(params));
15 });
16 }); 21 });
17 return newActions; 22 return newActions;
18}; 23};