Skip to content

Commit ec09cec

Browse files
committed
Add support for null actions
1 parent db67090 commit ec09cec

6 files changed

Lines changed: 80 additions & 68 deletions

File tree

dist/hyperapp-devtools.js

Lines changed: 36 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/hyperapp-devtools.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/hyperapp-devtools.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/hyperapp-devtools.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/counter.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
add: value => state => ({ count: state.count + value }),
3030
down: () => (_, actions) => actions.add(-1),
3131
up: () => (_, actions) => actions.add(1),
32+
nullAction: null
3233
}
3334

3435
function view(state, actions) {

src/enhanceActions.ts

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,46 @@ export function enhanceActions(
1010
actions: any,
1111
prefix?: string
1212
): any {
13-
if (!actions) {
14-
return null
15-
}
16-
var namespace = prefix ? prefix + "." : ""
17-
return Object.keys(actions).reduce(function(otherActions, name) {
18-
var fnName = actions[name].name || name
19-
var namedspacedName = namespace + fnName
13+
const result = {}
14+
15+
const namespace = prefix ? prefix + "." : ""
16+
Object.keys(actions || {}).forEach(name => {
2017
var action = actions[name]
21-
otherActions[name] =
22-
typeof action === "function"
23-
? function(data) {
24-
return function(state, actions) {
25-
onAction({
26-
callDone: false,
27-
action: namedspacedName,
28-
data,
29-
runId
30-
})
31-
var result = action(data)
32-
result =
33-
typeof result === "function" ? result(state, actions) : result
34-
onAction({
35-
callDone: true,
36-
action: namedspacedName,
37-
data,
38-
result,
39-
runId
40-
})
41-
return result
42-
}
43-
}
44-
: enhanceActions(onAction, runId, action, namedspacedName)
45-
return otherActions
46-
}, {})
18+
if (!action) {
19+
result[name] = null
20+
return
21+
}
22+
23+
const fnName = action.name || name
24+
const namedspacedName = namespace + fnName
25+
if (typeof action === "function") {
26+
result[name] = function(data) {
27+
return function(state, actions) {
28+
onAction({
29+
callDone: false,
30+
action: namedspacedName,
31+
data,
32+
runId
33+
})
34+
var result = action(data)
35+
result =
36+
typeof result === "function" ? result(state, actions) : result
37+
onAction({
38+
callDone: true,
39+
action: namedspacedName,
40+
data,
41+
result,
42+
runId
43+
})
44+
return result
45+
}
46+
}
47+
} else {
48+
result[name] = enhanceActions(onAction, runId, action, namedspacedName)
49+
}
50+
})
51+
52+
return result
4753
}
54+
4855
export default enhanceActions

0 commit comments

Comments
 (0)