From 58cda9cc7fb79ca9df6746de7f9662bc08dc156a Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 13 Oct 2017 12:29:40 +0200 Subject: initial commit --- src/actions/lib/actions.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/actions/lib/actions.js (limited to 'src/actions/lib') diff --git a/src/actions/lib/actions.js b/src/actions/lib/actions.js new file mode 100644 index 000000000..499018d70 --- /dev/null +++ b/src/actions/lib/actions.js @@ -0,0 +1,18 @@ +export default (definitions, validate) => { + const newActions = {}; + Object.keys(definitions).forEach((scopeName) => { + newActions[scopeName] = {}; + Object.keys(definitions[scopeName]).forEach((actionName) => { + const action = (params) => { + const schema = definitions[scopeName][actionName]; + validate(schema, params, actionName); + action.notify(params); + }; + newActions[scopeName][actionName] = action; + action.listeners = []; + action.listen = listener => action.listeners.push(listener); + action.notify = params => action.listeners.forEach(listener => listener(params)); + }); + }); + return newActions; +}; -- cgit v1.2.3-70-g09d2