working
This commit is contained in:
parent
f24464a590
commit
3ea7863d5a
58
src/index.js
58
src/index.js
@ -34,9 +34,10 @@ function buildActions({mutations = {}, subduxes = {}}) {
|
|||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
const composeMutations = (m1,m2) =>
|
const composeMutations = mutations =>
|
||||||
|
mutations.reduce( (m1,m2) =>
|
||||||
(payload=null,action={}) => state => m2(payload,action)(
|
(payload=null,action={}) => state => m2(payload,action)(
|
||||||
m1(payload,action)(state) );
|
m1(payload,action)(state) ));
|
||||||
|
|
||||||
function buildMutations({mutations = {}, subduxes = {}}) {
|
function buildMutations({mutations = {}, subduxes = {}}) {
|
||||||
// we have to differentiate the subduxes with '*' than those
|
// we have to differentiate the subduxes with '*' than those
|
||||||
@ -46,55 +47,38 @@ function buildMutations({mutations = {}, subduxes = {}}) {
|
|||||||
...Object.values( subduxes ).map( ({mutations}) => Object.keys(mutations) )
|
...Object.values( subduxes ).map( ({mutations}) => Object.keys(mutations) )
|
||||||
) );
|
) );
|
||||||
|
|
||||||
// let's seed with noops
|
|
||||||
let mergedMutations = {};
|
let mergedMutations = {};
|
||||||
|
|
||||||
|
let [ globby, nonGlobby ] = fp.partition(
|
||||||
|
([_,{mutations}]) => mutations['*'],
|
||||||
|
Object.entries(subduxes)
|
||||||
|
);
|
||||||
|
|
||||||
|
globby = globby |> fp.fromPairs |> fp.mapValues(
|
||||||
|
({reducer}) => (_,action={}) => state =>
|
||||||
|
reducer(state,action) );
|
||||||
|
|
||||||
|
const globbyMutation = (payload,action) => u(
|
||||||
|
globby |> fp.mapValues( mut => mut(payload,action) )
|
||||||
|
);
|
||||||
|
|
||||||
actions.forEach( action => {
|
actions.forEach( action => {
|
||||||
mergedMutations[action] = () => state => state;
|
mergedMutations[action] = [ globbyMutation ]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
nonGlobby.forEach( ([slice, {mutations,reducer}]) => {
|
||||||
console.log(mergedMutations);
|
|
||||||
|
|
||||||
Object.entries( subduxes ).forEach( ([slice, {mutations,reducer}]) => {
|
|
||||||
|
|
||||||
if( mutations['*'] ) {
|
|
||||||
const localized = (payload=null,action={}) => u.updateIn( slice, mutations['*'](payload,action) );
|
|
||||||
console.log("b");
|
|
||||||
mergedMutations = fp.mapValues(
|
|
||||||
mutation => composeMutations(
|
|
||||||
(dummy,action) => u.updateIn(slice,
|
|
||||||
state => reducer(state,action)
|
|
||||||
), mutation )
|
|
||||||
)(mergedMutations);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.entries(mutations).forEach(([type,mutation]) => {
|
Object.entries(mutations).forEach(([type,mutation]) => {
|
||||||
const localized = (payload=null,action={}) => u.updateIn( slice, mutation(payload,action) );
|
const localized = (payload=null,action={}) => u.updateIn( slice, mutation(payload,action) );
|
||||||
|
|
||||||
if( type !== '*' ) {
|
mergedMutations[type].push(localized);
|
||||||
console.log("a");
|
|
||||||
|
|
||||||
mergedMutations[type] = composeMutations(
|
|
||||||
localized, mergedMutations[type]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
console.log(mergedMutations);
|
|
||||||
|
|
||||||
Object.entries(mutations).forEach(([type,mutation]) => {
|
Object.entries(mutations).forEach(([type,mutation]) => {
|
||||||
console.log(type,":",mutation,":",mergedMutations[type]);
|
mergedMutations[type].push(mutation);
|
||||||
|
|
||||||
mergedMutations[type] = composeMutations(
|
|
||||||
mergedMutations[type], mutation
|
|
||||||
)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return mergedMutations;
|
return mergedMutations |> fp.mapValues( composeMutations );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user