UNPKG

2.8 kBJavaScriptView Raw
1// @flow
2
3import type { Action, EndPointCb } from "./types";
4
5type RequestPageArgsTypes = {
6 endpoint: string;
7 endpointCb: EndPointCb;
8 manageEntity: any;
9 resultsKey: string;
10 totalKey: string;
11 pageArgName: string;
12 idKey: string;
13 page: number;
14 token: string;
15};
16
17type ReceivePageArgsTypes = {
18 endpoint: string;
19 endpointCb: EndPointCb;
20 manageEntity: any;
21 pageArgName: string;
22 idKey: string;
23 page: number;
24 token: string;
25 items: Array<any>;
26 total: number;
27 error: bool;
28}
29
30import agent from "superagent";
31
32const requestPage = ({
33 endpoint,
34 endpointCb,
35 manageEntity,
36 resultsKey,
37 totalKey,
38 pageArgName,
39 idKey,
40 page,
41 token,
42} : RequestPageArgsTypes) : Action => ({
43 type : "@@redux-paginator-immutable/REQUEST_PAGE",
44 meta : {
45 endpoint,
46 endpointCb,
47 manageEntity,
48 resultsKey,
49 totalKey,
50 pageArgName,
51 idKey,
52 },
53 payload: {
54 page,
55 token,
56 },
57});
58
59const receivePage = ({
60 endpoint,
61 endpointCb,
62 manageEntity,
63 pageArgName,
64 idKey,
65 page,
66 token,
67 items,
68 error,
69 total,
70} : ReceivePageArgsTypes) : Action => ({
71 type : "@@redux-paginator-immutable/RECEIVE_PAGE",
72 meta : {
73 endpoint,
74 endpointCb,
75 manageEntity,
76 pageArgName,
77 idKey,
78 },
79 payload: {
80 page,
81 token,
82 items,
83 error,
84 total,
85 },
86});
87
88const resetView = (endpoint : string, token : string) : Action => ({
89 type : "@@redux-paginator-immutable/RESET_VIEW",
90 meta : {
91 endpoint,
92 },
93 payload: {
94 token,
95 },
96});
97
98const changeView = (endpoint : string, {
99 token,
100 view,
101} : { token : string, view : number }) : Action => ({
102 type : "@@redux-paginator-immutable/CHANGE_VIEW",
103 meta : {
104 endpoint,
105 },
106 payload: {
107 token,
108 view,
109 },
110});
111
112const clearData = (endpoint : string) : Action => ({
113 type : "@@redux-paginator-immutable/CLEAR_DATA",
114 meta : {
115 endpoint,
116 },
117});
118
119
120// data info
121
122type FetchDataItem = {
123 dataItemURL: string;
124 endpoint: string;
125 normalizeDataItem: any;
126 id: string;
127}
128
129const fetchDataItemRequest = ({ dataItemURL, normalizeDataItem, id } : FetchDataItem) : Promise<*> => (
130 new Promise((resolve, reject) => (
131 agent.
132 get(`${dataItemURL}/${id}`).
133 set("Accept", "application/json").
134 end(normalizeDataItem(resolve, reject))
135 )) : Promise<any>
136);
137
138export const fetchItem = (things : FetchDataItem) : any => ({
139 type : "@@redux-paginator-immutable/FETCH_ITEM_DATA",
140 payload : fetchDataItemRequest(things),
141 meta : {
142 id : things.id,
143 endpoint : things.endpoint,
144 },
145});
146
147export default {
148 clearData,
149 requestPage,
150 receivePage,
151 resetView,
152 changeView,
153};
154
\No newline at end of file