From 602fbf4d5f7bfcc431f42de6c6c948ce2a075bc1 Mon Sep 17 00:00:00 2001 From: Lucas Constantino Silva Date: Mon, 29 Aug 2016 22:28:32 -0300 Subject: [PATCH] Added module initial state. --- src/bootstrap.js | 10 ++++++---- src/processModules.js | 7 ++++++- test/bootstrap.test.js | 5 +++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/bootstrap.js b/src/bootstrap.js index 9ef96bf..097d372 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -4,13 +4,15 @@ import configureStore from './configureStore' export const BOOT = 'redux-boot/BOOT' -export default function boot(initialState = {}, modules = []) { - const {reducers, middlewares, enhancers} = processModules(modules) +export default function boot(state = {}, modules = []) { + const {reducers, middlewares, enhancers, initialState} = processModules(modules) - let store = configureStore(initialState, reducers, middlewares, enhancers) + state = {...initialState, ...state} + + let store = configureStore(state, reducers, middlewares, enhancers) return store - .dispatch(bootAction(initialState)) + .dispatch(bootAction(state)) .then(action => { return { action, diff --git a/src/processModules.js b/src/processModules.js index f213284..b576fd5 100644 --- a/src/processModules.js +++ b/src/processModules.js @@ -23,10 +23,15 @@ export default function processModules(modules) { )) .map(module => module.enhancer) + const initialState = modules + .map(module => module.initialState || (f => f)) + .reduce((state, initialState) => initialState(state), {}) + return { reducers, middlewares, - enhancers + enhancers, + initialState, } } diff --git a/test/bootstrap.test.js b/test/bootstrap.test.js index da3a5b1..bd54a53 100644 --- a/test/bootstrap.test.js +++ b/test/bootstrap.test.js @@ -45,7 +45,8 @@ test('Boostrap new app with an initial state', assert => { }) test('Boostrap new app with initial state on modules', assert => { - const testModule = { initialState: { foo: 'bar' } } + const initialState = { foo: 'bar' } + const testModule = { initialState: (state) => initialState } const app = boot(null, [testModule]) @@ -53,7 +54,7 @@ test('Boostrap new app with initial state on modules', assert => { assert.deepEqual( store.getState(), - testModule.initialState, + initialState, 'State is equal to module\'s initial state' )