|
1 | | -import{ActionBody,Action,ActionCreatorDefinition,LazyDispatch}from'.' |
2 | | -import{Dispatch,Reducer}from'redux' |
3 | | - |
4 | | -exportclassReducerBuilder<State={}>{ |
5 | | -privateactions:{[type:string]:ActionBody<State,Action>}={} |
6 | | -privateinitState:State |
7 | | - |
8 | | -/** |
9 | | - * Initial state of the reducer |
10 | | - * |
11 | | - *@param {State} state State object |
12 | | - *@returns |
13 | | - *@memberof ReducerBuilder |
14 | | - */ |
15 | | -publicinit(state:State){ |
16 | | -this.initState=state |
17 | | -returnthis |
18 | | -} |
19 | | - |
20 | | -/** |
21 | | - * Consumer definition for given action type |
22 | | - * |
23 | | - *@template TPayload Action payload type |
24 | | - *@param {ActionCreatorDefinition<TPayload>} creator Action creator function |
25 | | - *@param {ActionBody<State, Action<TPayload>>} body Action body |
26 | | - *@returns |
27 | | - *@memberof ReducerBuilder |
28 | | - */ |
29 | | -publichandle<TPayload,TMeta>( |
30 | | -creator:ActionCreatorDefinition<TPayload,TMeta>, |
31 | | -body:ActionBody<State,Action<TPayload,TMeta>>, |
32 | | -){ |
33 | | -this.actions[creator.type]=body |
34 | | -returnthis |
35 | | -} |
36 | | - |
37 | | -privatebuild(dispatchPromise:Promise<Dispatch>):Reducer<State,Action>{ |
38 | | -return(state=this.initState,action)=>{ |
39 | | -constactionBody=this.actions[action.type] |
40 | | -constlazyDispatch:LazyDispatch=nestedAction=> |
41 | | -dispatchPromise.then(dispatch=>dispatch(nestedAction)) |
42 | | - |
43 | | -if(!!actionBody){ |
44 | | -returnactionBody(state,action,lazyDispatch) |
45 | | -} |
46 | | - |
47 | | -returnstate |
48 | | -} |
49 | | -} |
50 | | -} |
| 1 | +import{Dispatch,Reducer}from'redux' |
| 2 | + |
| 3 | +import{Action,ActionBody,ActionCreatorDefinition,LazyDispatch}from'.' |
| 4 | + |
| 5 | +exportclassReducerBuilder<State={}>{ |
| 6 | +privateactions:{[type:string]:ActionBody<State,Action>}={} |
| 7 | +privateinitState:State |
| 8 | + |
| 9 | +/** |
| 10 | + * Initial state of the reducer |
| 11 | + * |
| 12 | + *@param {State} state State object |
| 13 | + *@returns |
| 14 | + *@memberof ReducerBuilder |
| 15 | + */ |
| 16 | +publicinit(state:State){ |
| 17 | +this.initState=state |
| 18 | +returnthis |
| 19 | +} |
| 20 | + |
| 21 | +/** |
| 22 | + * Consumer definition for given action type |
| 23 | + * |
| 24 | + *@template TPayload Action payload type |
| 25 | + *@param {ActionCreatorDefinition<TPayload>} creator Action creator function |
| 26 | + *@param {ActionBody<State, Action<TPayload>>} body Action body |
| 27 | + *@returns |
| 28 | + *@memberof ReducerBuilder |
| 29 | + */ |
| 30 | +publichandle<TPayload,TMeta>( |
| 31 | +creator:ActionCreatorDefinition<TPayload,TMeta>, |
| 32 | +body:ActionBody<State,Action<TPayload,TMeta>>, |
| 33 | +){ |
| 34 | +this.actions[creator.type]=body |
| 35 | +returnthis |
| 36 | +} |
| 37 | + |
| 38 | +privatebuild(dispatchPromise:Promise<Dispatch>):Reducer<State,Action>{ |
| 39 | +return(state=this.initState,action)=>{ |
| 40 | +constactionBody=this.actions[action.type] |
| 41 | +constlazyDispatch:LazyDispatch=nestedAction=> |
| 42 | +dispatchPromise.then(dispatch=>dispatch(nestedAction)) |
| 43 | + |
| 44 | +if(!!actionBody){ |
| 45 | +returnactionBody(state,action,lazyDispatch) |
| 46 | +} |
| 47 | + |
| 48 | +returnstate |
| 49 | +} |
| 50 | +} |
| 51 | +} |