UNPKG

1.44 kBJSXView Raw
1// @flow
2
3type FetchItemDataFulFilledProps = {
4 payload: {
5 Data: any;
6 };
7 meta: {
8 id: string;
9 };
10};
11
12import * as Immutable from "immutable";
13
14const defaultOptions = Immutable.Map({
15 fetching : true,
16 fetched : false,
17 error : false,
18});
19
20const
21 fetchItemDataPending = (state : any, { meta : { id } } : { meta : { id : string }}) => (
22 state.update(id, (current) => {
23 if (typeof current === "undefined") {
24 return defaultOptions;
25 }
26
27 return current.mergeDeep(defaultOptions);
28 })
29 ),
30 fetchItemDataRejected = (state : any, { meta : { id } } : { meta : { id : string }}) => (
31 state.update((id), (current) => {
32 if (typeof current === "undefined") {
33 return current;
34 }
35
36 return current.mergeDeep(Immutable.Map({
37 fetching : false,
38 fetched : false,
39 error : true,
40 }));
41 })
42 ),
43 fetchItemDataFulFilled = (state : any,
44 { payload : { Data }, meta : { id } } : FetchItemDataFulFilledProps
45 ) => (
46 state.update((id), (current) => {
47 if (typeof current === "undefined") {
48 return current;
49 }
50
51 return current.mergeDeep(Immutable.Map({
52 Data,
53 fetching : false,
54 fetched : true,
55 error : false,
56 }));
57 })
58 );
59
60export {
61 fetchItemDataPending,
62 fetchItemDataRejected,
63 fetchItemDataFulFilled,
64};