Skip to content

Commit

Permalink
Create instance without key
Browse files Browse the repository at this point in the history
  • Loading branch information
Darya Saenko committed Nov 3, 2019
1 parent 4f83dff commit 53dbf55
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ lib/
node_modules/
*.swp
package-lock.json
.idea/
26 changes: 22 additions & 4 deletions src/create-instance.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { createDynamicMiddlewares } from 'redux-dynamic-middlewares'
import { combineReducers } from 'redux';

import { configureStore } from './configure-store'
import { reloadState } from './reload-state'
Expand All @@ -15,16 +16,32 @@ const createInstance = ({
thunk = {},
reducer = emptyReducer,
middleware = emptyMiddleware,
useKey = true,
withDevTools,
} = {}) => {
const dynamicMiddlewares = createDynamicMiddlewares()
const reducerWrapper = (reducer && reducer.wrapper) ? reducer.wrapper : combineReducers
const reducerInitial = (reducer && reducer.wrapper) ? reducer.wrapper(reducer.reducers) : emptyReducer

let reducers

// TODO: add check for reducer - that absent duplicate
if (useKey) {
reducers = {
[key]: (state = initial, action) => reducer(state, action),
}
} else {
reducers = (reducer && reducer.reducers) ? { ...reducer.reducers } : (state = initial, action) => reducer(state, action)
}

dynamicMiddlewares.addMiddleware(middleware)

const registry = {
keys: {
[key]: true,
},
reducers: {
[key]: (state = initial, action) => reducer(state, action),
},
reducers,
reducerWrapper,
thunks: {
[key]: thunk,
},
Expand All @@ -37,7 +54,8 @@ const createInstance = ({
name,
withDevTools,
key,
reducer: emptyReducer,
initial,
reducer: reducerInitial,
dynamicMiddlewares: dynamicMiddlewares.enhancer,
})

Expand Down
3 changes: 1 addition & 2 deletions src/reload-state.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { combineReducers } from 'redux'
import thunkMiddleware from 'redux-thunk'

const reloadState = (registry, store, dynamicMiddlewares) => {
store.replaceReducer(combineReducers(registry.reducers))
store.replaceReducer(registry.reducerWrapper(registry.reducers))
dynamicMiddlewares.resetMiddlewares()

const thunkObject = thunkMiddleware.withExtraArgument(registry.thunks)
Expand Down

0 comments on commit 53dbf55

Please sign in to comment.