Use console.group in ReduxLogger, enable via localStorage

This commit is contained in:
Jerko Steiner 2019-04-03 23:45:19 +08:00
parent 1d582740a8
commit 3d85bb2106
2 changed files with 12 additions and 3 deletions

View File

@ -2,7 +2,11 @@ import {AnyAction, Middleware} from 'redux'
import {diff} from 'deep-object-diff'
export class ReduxLogger {
constructor(readonly enabled: boolean) {}
handle: Middleware = store => next => (action: AnyAction) => {
if (!this.enabled) {
return next(action)
}
const prevState = store.getState()
const result = next(action)
const nextState = store.getState()
@ -17,14 +21,17 @@ export class ReduxLogger {
const stateDiff = diff(prevState, nextState)
// tslint:disable-next-line
console.group(type)
// tslint:disable-next-line
console.log(
'%s\n action: %O\n stateDiff: %O\n prevState: %O\n nextState: %O',
type,
'action: %O\nstateDiff: %O\nprevState: %O\nnextState: %O',
action,
stateDiff,
prevState,
nextState,
)
// tslint:disable-next-line
console.groupEnd()
return result
}
}

View File

@ -21,7 +21,9 @@ export function createStore<State, A extends Action>(
params: ICreateStoreParams<State, A>,
) {
const middleware = params.middleware || [
new ReduxLogger().handle,
new ReduxLogger(
window && window.localStorage && window.localStorage.log,
).handle,
new PromiseMiddleware().handle,
]
return (state?: DeepPartial<State>) => create(