@webiny/app-aco 0.0.0-unstable.2af142b57e → 0.0.0-unstable.496cf268ac
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -47
- package/components/Dialogs/DialogCreate.d.ts +1 -1
- package/components/Dialogs/DialogCreate.js +55 -28
- package/components/Dialogs/DialogCreate.js.map +1 -1
- package/components/Dialogs/DialogDelete.js +1 -1
- package/components/Dialogs/DialogDelete.js.map +1 -1
- package/components/Dialogs/DialogMove.d.ts +11 -0
- package/components/Dialogs/DialogMove.js +115 -0
- package/components/Dialogs/DialogMove.js.map +1 -0
- package/components/Dialogs/DialogUpdate.js +30 -45
- package/components/Dialogs/DialogUpdate.js.map +1 -1
- package/components/Dialogs/styled.d.ts +15 -5
- package/components/Dialogs/styled.js +8 -3
- package/components/Dialogs/styled.js.map +1 -1
- package/components/Tree/ButtonCreate/styled.d.ts +12 -12
- package/components/Tree/ButtonCreate/styled.js +1 -1
- package/components/Tree/ButtonCreate/styled.js.map +1 -1
- package/components/Tree/Empty/styled.d.ts +5 -2
- package/components/Tree/List/index.d.ts +3 -1
- package/components/Tree/List/index.js +4 -1
- package/components/Tree/List/index.js.map +1 -1
- package/components/Tree/List/utils.d.ts +2 -1
- package/components/Tree/List/utils.js +4 -0
- package/components/Tree/List/utils.js.map +1 -1
- package/components/Tree/Loader/index.js +2 -1
- package/components/Tree/Loader/index.js.map +1 -1
- package/components/Tree/Loader/styled.d.ts +9 -3
- package/components/Tree/MenuActions/index.js +10 -3
- package/components/Tree/MenuActions/index.js.map +1 -1
- package/components/Tree/MenuActions/styled.d.ts +8 -2
- package/components/Tree/MenuActions/styled.js +8 -2
- package/components/Tree/MenuActions/styled.js.map +1 -1
- package/components/Tree/Node/index.d.ts +4 -2
- package/components/Tree/Node/index.js +11 -6
- package/components/Tree/Node/index.js.map +1 -1
- package/components/Tree/Node/styled.d.ts +29 -24
- package/components/Tree/Node/styled.js +4 -4
- package/components/Tree/Node/styled.js.map +1 -1
- package/components/Tree/NodePreview/styled.d.ts +5 -2
- package/components/Tree/Placeholder/styled.d.ts +5 -2
- package/components/Tree/Title/styled.d.ts +9 -3
- package/components/Tree/Title/styled.js +1 -1
- package/components/Tree/Title/styled.js.map +1 -1
- package/components/Tree/index.d.ts +3 -0
- package/components/Tree/index.js +8 -3
- package/components/Tree/index.js.map +1 -1
- package/components/Tree/styled.d.ts +5 -2
- package/components/Tree/styled.js +1 -1
- package/components/Tree/styled.js.map +1 -1
- package/contexts/folders.js +1 -1
- package/contexts/folders.js.map +1 -1
- package/contexts/links.d.ts +18 -0
- package/contexts/links.js +371 -0
- package/contexts/links.js.map +1 -0
- package/contexts/records.d.ts +12 -6
- package/contexts/records.js +97 -36
- package/contexts/records.js.map +1 -1
- package/graphql/links.gql.d.ts +5 -0
- package/graphql/links.gql.js +34 -0
- package/graphql/links.gql.js.map +1 -0
- package/graphql/records.gql.js +2 -2
- package/graphql/records.gql.js.map +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +11 -0
- package/hooks/index.js.map +1 -1
- package/hooks/useAcoList.d.ts +18 -0
- package/hooks/useAcoList.js +137 -0
- package/hooks/useAcoList.js.map +1 -0
- package/hooks/useLinks.d.ts +20 -0
- package/hooks/useLinks.js +65 -0
- package/hooks/useLinks.js.map +1 -0
- package/hooks/useRecords.d.ts +12 -8
- package/hooks/useRecords.js +16 -6
- package/hooks/useRecords.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +6 -0
- package/index.js.map +1 -1
- package/package.json +13 -11
- package/sorting.d.ts +3 -0
- package/sorting.js +32 -0
- package/sorting.js.map +1 -0
- package/types.d.ts +21 -5
- package/types.js +14 -1
- package/types.js.map +1 -1
package/contexts/records.js
CHANGED
|
@@ -6,16 +6,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.SearchRecordsProvider = exports.SearchRecordsContext = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
10
|
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
10
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
12
|
var _objectSpread5 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
15
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
16
|
var _reactHooks = require("@apollo/react-hooks");
|
|
17
|
+
var _unionBy = _interopRequireDefault(require("lodash/unionBy"));
|
|
17
18
|
var _handlers = require("../handlers");
|
|
18
19
|
var _records = require("../graphql/records.gql");
|
|
20
|
+
var _sorting = require("../sorting");
|
|
19
21
|
var SearchRecordsContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
20
22
|
exports.SearchRecordsContext = SearchRecordsContext;
|
|
21
23
|
var defaultLoading = {
|
|
@@ -46,23 +48,46 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
46
48
|
records: records,
|
|
47
49
|
loading: loading,
|
|
48
50
|
meta: meta,
|
|
49
|
-
listRecords: function listRecords(
|
|
50
|
-
var _arguments = arguments;
|
|
51
|
+
listRecords: function listRecords(params) {
|
|
51
52
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
52
|
-
var
|
|
53
|
+
var _meta$folderId;
|
|
54
|
+
var type, folderId, after, limit, sorting, recordsCount, totalCount, action, sort, _yield$apolloFetching, response, _response$search$list, data, responseMeta, error;
|
|
53
55
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
54
56
|
while (1) switch (_context.prev = _context.next) {
|
|
55
57
|
case 0:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
type = params.type, folderId = params.folderId, after = params.after, limit = params.limit, sorting = params.sort;
|
|
59
|
+
/**
|
|
60
|
+
* Both folderId and type are optional to init `useRecords` but required to list records:
|
|
61
|
+
* this allows us to use `useRecords` methods like `getRecord` without passing useless params.
|
|
62
|
+
* But still, we need these params to list records.
|
|
63
|
+
*/
|
|
64
|
+
if (!(!folderId || !type)) {
|
|
65
|
+
_context.next = 3;
|
|
60
66
|
break;
|
|
61
67
|
}
|
|
62
|
-
throw new Error("`folderId`
|
|
63
|
-
case
|
|
68
|
+
throw new Error("`folderId` and `type` are mandatory");
|
|
69
|
+
case 3:
|
|
70
|
+
/**
|
|
71
|
+
* Avoiding to fetch records in case they have already been fetched.
|
|
72
|
+
* This happens when visiting a list with all records loaded and receives "after" param.
|
|
73
|
+
*/
|
|
74
|
+
recordsCount = records.filter(function (record) {
|
|
75
|
+
return record.location.folderId === folderId;
|
|
76
|
+
}).length;
|
|
77
|
+
totalCount = ((_meta$folderId = meta[folderId]) === null || _meta$folderId === void 0 ? void 0 : _meta$folderId.totalCount) || 0;
|
|
78
|
+
if (!(after && recordsCount === totalCount)) {
|
|
79
|
+
_context.next = 7;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
return _context.abrupt("return");
|
|
83
|
+
case 7:
|
|
84
|
+
// Remove records in case of sorting change and not a paginated request.
|
|
85
|
+
if (sorting && !after) {
|
|
86
|
+
setRecords([]);
|
|
87
|
+
}
|
|
64
88
|
action = after ? "LIST_MORE" : "LIST";
|
|
65
|
-
|
|
89
|
+
sort = (0, _sorting.validateOrGetDefaultDbSort)(sorting);
|
|
90
|
+
_context.next = 12;
|
|
66
91
|
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)(action, setLoading), function () {
|
|
67
92
|
return client.query({
|
|
68
93
|
query: _records.LIST_RECORDS,
|
|
@@ -72,22 +97,25 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
72
97
|
folderId: folderId
|
|
73
98
|
},
|
|
74
99
|
limit: limit,
|
|
75
|
-
after: after
|
|
76
|
-
|
|
100
|
+
after: after,
|
|
101
|
+
sort: sort
|
|
102
|
+
},
|
|
103
|
+
fetchPolicy: "network-only"
|
|
77
104
|
});
|
|
78
105
|
});
|
|
79
|
-
case
|
|
106
|
+
case 12:
|
|
80
107
|
_yield$apolloFetching = _context.sent;
|
|
81
108
|
response = _yield$apolloFetching.data;
|
|
82
109
|
_response$search$list = response.search.listRecords, data = _response$search$list.data, responseMeta = _response$search$list.meta, error = _response$search$list.error;
|
|
83
110
|
if (!(!data || !responseMeta)) {
|
|
84
|
-
_context.next =
|
|
111
|
+
_context.next = 17;
|
|
85
112
|
break;
|
|
86
113
|
}
|
|
87
114
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch records");
|
|
88
|
-
case
|
|
115
|
+
case 17:
|
|
116
|
+
// Adjusting sorting while merging records with data received from the server.
|
|
89
117
|
setRecords(function (records) {
|
|
90
|
-
return (0,
|
|
118
|
+
return (0, _sorting.sortTableItems)((0, _unionBy.default)(data, records, "id"), sort);
|
|
91
119
|
});
|
|
92
120
|
setMeta(function (meta) {
|
|
93
121
|
return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, responseMeta));
|
|
@@ -98,7 +126,7 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
98
126
|
});
|
|
99
127
|
});
|
|
100
128
|
return _context.abrupt("return", data);
|
|
101
|
-
case
|
|
129
|
+
case 21:
|
|
102
130
|
case "end":
|
|
103
131
|
return _context.stop();
|
|
104
132
|
}
|
|
@@ -123,21 +151,45 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
123
151
|
query: _records.GET_RECORD,
|
|
124
152
|
variables: {
|
|
125
153
|
id: id
|
|
126
|
-
}
|
|
154
|
+
},
|
|
155
|
+
fetchPolicy: "network-only"
|
|
127
156
|
});
|
|
128
157
|
});
|
|
129
158
|
case 4:
|
|
130
159
|
_yield$apolloFetching2 = _context2.sent;
|
|
131
160
|
response = _yield$apolloFetching2.data;
|
|
132
161
|
_response$search$getR = response.search.getRecord, data = _response$search$getR.data, error = _response$search$getR.error;
|
|
133
|
-
if (
|
|
162
|
+
if (!(error && error.code !== "NOT_FOUND")) {
|
|
134
163
|
_context2.next = 9;
|
|
135
164
|
break;
|
|
136
165
|
}
|
|
137
|
-
throw new Error(
|
|
166
|
+
throw new Error("Network error while syncing record");
|
|
138
167
|
case 9:
|
|
168
|
+
if (!data) {
|
|
169
|
+
// No record found - must be deleted by previous operation
|
|
170
|
+
setRecords(function (records) {
|
|
171
|
+
return records.filter(function (record) {
|
|
172
|
+
return record.id !== id;
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
} else {
|
|
176
|
+
setRecords(function (prevRecords) {
|
|
177
|
+
var recordIndex = prevRecords.findIndex(function (record) {
|
|
178
|
+
return record.id === id;
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// No record found in the list - must be added by previous operation
|
|
182
|
+
if (recordIndex === -1) {
|
|
183
|
+
return [].concat((0, _toConsumableArray2.default)(prevRecords), [data]);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Updating record found in the list
|
|
187
|
+
var result = [].concat((0, _toConsumableArray2.default)(prevRecords.slice(0, recordIndex)), [(0, _objectSpread5.default)((0, _objectSpread5.default)({}, prevRecords[recordIndex]), data)], (0, _toConsumableArray2.default)(prevRecords.slice(recordIndex + 1)));
|
|
188
|
+
return result;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
139
191
|
return _context2.abrupt("return", data);
|
|
140
|
-
case
|
|
192
|
+
case 11:
|
|
141
193
|
case "end":
|
|
142
194
|
return _context2.stop();
|
|
143
195
|
}
|
|
@@ -195,48 +247,57 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
195
247
|
},
|
|
196
248
|
updateRecord: function updateRecord(record, contextFolderId) {
|
|
197
249
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
|
|
198
|
-
var id, location, _yield$apolloFetching4, response, _response$search$upda,
|
|
250
|
+
var id, location, data, title, content, _yield$apolloFetching4, response, _response$search$upda, result, error;
|
|
199
251
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
|
|
200
252
|
while (1) switch (_context4.prev = _context4.next) {
|
|
201
253
|
case 0:
|
|
202
|
-
|
|
203
|
-
|
|
254
|
+
if (contextFolderId) {
|
|
255
|
+
_context4.next = 2;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
throw new Error("`folderId` is mandatory");
|
|
259
|
+
case 2:
|
|
260
|
+
id = record.id, location = record.location, data = record.data, title = record.title, content = record.content;
|
|
261
|
+
_context4.next = 5;
|
|
204
262
|
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("UPDATE", setLoading), function () {
|
|
205
263
|
return client.mutate({
|
|
206
264
|
mutation: _records.UPDATE_RECORD,
|
|
207
265
|
variables: {
|
|
208
266
|
id: id,
|
|
209
267
|
data: {
|
|
210
|
-
|
|
268
|
+
title: title,
|
|
269
|
+
content: content,
|
|
270
|
+
location: location,
|
|
271
|
+
data: data
|
|
211
272
|
}
|
|
212
273
|
}
|
|
213
274
|
});
|
|
214
275
|
});
|
|
215
|
-
case
|
|
276
|
+
case 5:
|
|
216
277
|
_yield$apolloFetching4 = _context4.sent;
|
|
217
278
|
response = _yield$apolloFetching4.data;
|
|
218
279
|
if (response) {
|
|
219
|
-
_context4.next =
|
|
280
|
+
_context4.next = 9;
|
|
220
281
|
break;
|
|
221
282
|
}
|
|
222
283
|
throw new Error("Network error while updating record");
|
|
223
|
-
case
|
|
224
|
-
_response$search$upda = response.search.updateRecord,
|
|
225
|
-
if (
|
|
226
|
-
_context4.next =
|
|
284
|
+
case 9:
|
|
285
|
+
_response$search$upda = response.search.updateRecord, result = _response$search$upda.data, error = _response$search$upda.error;
|
|
286
|
+
if (result) {
|
|
287
|
+
_context4.next = 12;
|
|
227
288
|
break;
|
|
228
289
|
}
|
|
229
290
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not update record");
|
|
230
|
-
case
|
|
291
|
+
case 12:
|
|
231
292
|
setRecords(function (records) {
|
|
232
293
|
return records.map(function (record) {
|
|
233
|
-
return record.id === id ?
|
|
294
|
+
return record.id === id ? result : record;
|
|
234
295
|
}).filter(function (record) {
|
|
235
296
|
return record.location.folderId === contextFolderId;
|
|
236
297
|
});
|
|
237
298
|
});
|
|
238
|
-
return _context4.abrupt("return",
|
|
239
|
-
case
|
|
299
|
+
return _context4.abrupt("return", result);
|
|
300
|
+
case 14:
|
|
240
301
|
case "end":
|
|
241
302
|
return _context4.stop();
|
|
242
303
|
}
|
package/contexts/records.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SearchRecordsContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","SearchRecordsProvider","children","client","useApolloClient","useState","records","setRecords","loading","setLoading","Object","create","meta","setMeta","context","listRecords","type","folderId","limit","after","Error","action","apolloFetchingHandler","loadingHandler","query","LIST_RECORDS","variables","location","response","data","search","responseMeta","error","message","Set","prev","getRecord","id","GET_RECORD","createRecord","record","mutate","mutation","CREATE_RECORD","totalCount","updateRecord","contextFolderId","UPDATE_RECORD","map","filter","deleteRecord","DELETE_RECORD"],"sources":["records.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nimport { apolloFetchingHandler, loadingHandler } from \"~/handlers\";\n\nimport {\n CREATE_RECORD,\n DELETE_RECORD,\n GET_RECORD,\n LIST_RECORDS,\n UPDATE_RECORD\n} from \"~/graphql/records.gql\";\n\nimport {\n CreateSearchRecordResponse,\n CreateSearchRecordVariables,\n DeleteSearchRecordResponse,\n DeleteSearchRecordVariables,\n GetSearchRecordQueryVariables,\n GetSearchRecordResponse,\n SearchRecordItem,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsResponse,\n ListMeta,\n Loading,\n LoadingActions,\n Meta,\n UpdateSearchRecordResponse,\n UpdateSearchRecordVariables\n} from \"~/types\";\n\ninterface SearchRecordsContext {\n records: SearchRecordItem[];\n loading: Loading<LoadingActions>;\n meta: Meta<ListMeta>;\n listRecords: (\n type: string,\n folderId: string,\n limit?: number,\n after?: string\n ) => Promise<SearchRecordItem[]>;\n getRecord: (id: string, folderId: string) => Promise<SearchRecordItem>;\n createRecord: (link: Omit<SearchRecordItem, \"id\">) => Promise<SearchRecordItem>;\n updateRecord: (link: SearchRecordItem, contextFolderId: string) => Promise<SearchRecordItem>;\n deleteRecord(link: SearchRecordItem): Promise<true>;\n}\n\nexport const SearchRecordsContext = React.createContext<SearchRecordsContext | undefined>(\n undefined\n);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const SearchRecordsProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [records, setRecords] = useState<SearchRecordItem[]>([]);\n const [loading, setLoading] = useState<Loading<LoadingActions>>(defaultLoading);\n const [meta, setMeta] = useState<Meta<ListMeta>>(Object.create(null));\n\n const context: SearchRecordsContext = {\n records,\n loading,\n meta,\n async listRecords(type: string, folderId: string, limit = 10, after?: string) {\n if (!folderId) {\n throw new Error(\"`folderId` is mandatory\");\n }\n\n const action = after ? \"LIST_MORE\" : \"LIST\";\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(action, setLoading),\n () =>\n client.query<ListSearchRecordsResponse, ListSearchRecordsQueryVariables>({\n query: LIST_RECORDS,\n variables: { type, location: { folderId }, limit, after }\n })\n );\n\n const { data, meta: responseMeta, error } = response.search.listRecords;\n\n if (!data || !responseMeta) {\n throw new Error(error?.message || \"Could not fetch records\");\n }\n\n setRecords(records => [...new Set([...records, ...data])]);\n\n setMeta(meta => ({\n ...meta,\n [folderId]: responseMeta\n }));\n\n setLoading(prev => {\n return {\n ...prev,\n INIT: false\n };\n });\n\n return data;\n },\n\n async getRecord(id) {\n if (!id) {\n throw new Error(\"Record `id` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"GET\", setLoading),\n () =>\n client.query<GetSearchRecordResponse, GetSearchRecordQueryVariables>({\n query: GET_RECORD,\n variables: { id }\n })\n );\n\n const { data, error } = response.search.getRecord;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch record with id: ${id}`);\n }\n\n return data;\n },\n\n async createRecord(record) {\n const { location } = record;\n const { folderId } = location;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"CREATE\", setLoading),\n () =>\n client.mutate<CreateSearchRecordResponse, CreateSearchRecordVariables>({\n mutation: CREATE_RECORD,\n variables: { data: record }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while creating search record\");\n }\n\n const { data, error } = response.search.createRecord;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create record\");\n }\n\n setRecords(records => [...records, data]);\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: ++meta[folderId].totalCount\n }\n }));\n\n return data;\n },\n\n async updateRecord(record, contextFolderId) {\n const { id, location } = record;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"UPDATE\", setLoading),\n () =>\n client.mutate<UpdateSearchRecordResponse, UpdateSearchRecordVariables>({\n mutation: UPDATE_RECORD,\n variables: { id, data: { location } }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while updating record\");\n }\n\n const { data, error } = response.search.updateRecord;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update record\");\n }\n\n setRecords(records =>\n records\n .map(record => (record.id === id ? data : record))\n .filter(record => record.location.folderId === contextFolderId)\n );\n\n return data;\n },\n\n async deleteRecord(record) {\n const { id, location } = record;\n const { folderId } = location;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"DELETE\", setLoading),\n () =>\n client.mutate<DeleteSearchRecordResponse, DeleteSearchRecordVariables>({\n mutation: DELETE_RECORD,\n variables: { id }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while deleting record\");\n }\n\n const { data, error } = response.search.deleteRecord;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete record\");\n }\n\n setRecords(records => records.filter(record => record.id !== id));\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: --meta[folderId].totalCount\n }\n }));\n\n return true;\n }\n };\n\n return (\n <SearchRecordsContext.Provider value={context}>{children}</SearchRecordsContext.Provider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["SearchRecordsContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","SearchRecordsProvider","children","client","useApolloClient","useState","records","setRecords","loading","setLoading","Object","create","meta","setMeta","context","listRecords","params","type","folderId","after","limit","sorting","sort","Error","recordsCount","filter","record","location","length","totalCount","action","validateOrGetDefaultDbSort","apolloFetchingHandler","loadingHandler","query","LIST_RECORDS","variables","fetchPolicy","response","data","search","responseMeta","error","message","sortTableItems","unionBy","prev","getRecord","id","GET_RECORD","code","prevRecords","recordIndex","findIndex","result","slice","createRecord","mutate","mutation","CREATE_RECORD","updateRecord","contextFolderId","title","content","UPDATE_RECORD","map","deleteRecord","DELETE_RECORD"],"sources":["records.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport unionBy from \"lodash/unionBy\";\n\nimport { apolloFetchingHandler, loadingHandler } from \"~/handlers\";\n\nimport {\n CREATE_RECORD,\n DELETE_RECORD,\n GET_RECORD,\n LIST_RECORDS,\n UPDATE_RECORD\n} from \"~/graphql/records.gql\";\n\nimport {\n CreateSearchRecordResponse,\n CreateSearchRecordVariables,\n DeleteSearchRecordResponse,\n DeleteSearchRecordVariables,\n GetSearchRecordQueryVariables,\n GetSearchRecordResponse,\n SearchRecordItem,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsResponse,\n ListMeta,\n Loading,\n LoadingActions,\n Meta,\n UpdateSearchRecordResponse,\n UpdateSearchRecordVariables,\n ListDbSort\n} from \"~/types\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\n\ninterface SearchRecordsContext {\n records: SearchRecordItem[];\n loading: Loading<LoadingActions>;\n meta: Meta<ListMeta>;\n listRecords: (params: {\n type?: string;\n folderId?: string;\n limit?: number;\n after?: string;\n sort?: ListDbSort;\n }) => Promise<SearchRecordItem[]>;\n getRecord: (id: string) => Promise<SearchRecordItem>;\n createRecord: (record: Omit<SearchRecordItem, \"id\">) => Promise<SearchRecordItem>;\n updateRecord: (record: SearchRecordItem, contextFolderId?: string) => Promise<SearchRecordItem>;\n deleteRecord(record: SearchRecordItem): Promise<true>;\n}\n\nexport const SearchRecordsContext = React.createContext<SearchRecordsContext | undefined>(\n undefined\n);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const SearchRecordsProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [records, setRecords] = useState<SearchRecordItem[]>([]);\n const [loading, setLoading] = useState<Loading<LoadingActions>>(defaultLoading);\n const [meta, setMeta] = useState<Meta<ListMeta>>(Object.create(null));\n\n const context: SearchRecordsContext = {\n records,\n loading,\n meta,\n async listRecords(params) {\n const { type, folderId, after, limit, sort: sorting } = params;\n\n /**\n * Both folderId and type are optional to init `useRecords` but required to list records:\n * this allows us to use `useRecords` methods like `getRecord` without passing useless params.\n * But still, we need these params to list records.\n */\n if (!folderId || !type) {\n throw new Error(\"`folderId` and `type` are mandatory\");\n }\n\n /**\n * Avoiding to fetch records in case they have already been fetched.\n * This happens when visiting a list with all records loaded and receives \"after\" param.\n */\n const recordsCount = records.filter(\n record => record.location.folderId === folderId\n ).length;\n const totalCount = meta[folderId]?.totalCount || 0;\n if (after && recordsCount === totalCount) {\n return;\n }\n\n // Remove records in case of sorting change and not a paginated request.\n if (sorting && !after) {\n setRecords([]);\n }\n\n const action = after ? \"LIST_MORE\" : \"LIST\";\n const sort = validateOrGetDefaultDbSort(sorting);\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(action, setLoading),\n () =>\n client.query<ListSearchRecordsResponse, ListSearchRecordsQueryVariables>({\n query: LIST_RECORDS,\n variables: { type, location: { folderId }, limit, after, sort },\n fetchPolicy: \"network-only\"\n })\n );\n\n const { data, meta: responseMeta, error } = response.search.listRecords;\n\n if (!data || !responseMeta) {\n throw new Error(error?.message || \"Could not fetch records\");\n }\n\n // Adjusting sorting while merging records with data received from the server.\n setRecords(records => sortTableItems(unionBy(data, records, \"id\"), sort));\n\n setMeta(meta => ({\n ...meta,\n [folderId]: responseMeta\n }));\n\n setLoading(prev => {\n return {\n ...prev,\n INIT: false\n };\n });\n\n return data;\n },\n\n async getRecord(id) {\n if (!id) {\n throw new Error(\"Record `id` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"GET\", setLoading),\n () =>\n client.query<GetSearchRecordResponse, GetSearchRecordQueryVariables>({\n query: GET_RECORD,\n variables: { id },\n fetchPolicy: \"network-only\"\n })\n );\n\n const { data, error } = response.search.getRecord;\n\n if (error && error.code !== \"NOT_FOUND\") {\n throw new Error(\"Network error while syncing record\");\n }\n\n if (!data) {\n // No record found - must be deleted by previous operation\n setRecords(records => records.filter(record => record.id !== id));\n } else {\n setRecords(prevRecords => {\n const recordIndex = prevRecords.findIndex(record => record.id === id);\n\n // No record found in the list - must be added by previous operation\n if (recordIndex === -1) {\n return [...prevRecords, data];\n }\n\n // Updating record found in the list\n const result = [\n ...prevRecords.slice(0, recordIndex),\n {\n ...prevRecords[recordIndex],\n ...data\n },\n ...prevRecords.slice(recordIndex + 1)\n ];\n\n return result;\n });\n }\n\n return data;\n },\n\n async createRecord(record) {\n const { location } = record;\n const { folderId } = location;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"CREATE\", setLoading),\n () =>\n client.mutate<CreateSearchRecordResponse, CreateSearchRecordVariables>({\n mutation: CREATE_RECORD,\n variables: { data: record }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while creating search record\");\n }\n\n const { data, error } = response.search.createRecord;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create record\");\n }\n\n setRecords(records => [...records, data]);\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: ++meta[folderId].totalCount\n }\n }));\n\n return data;\n },\n\n async updateRecord(record, contextFolderId) {\n if (!contextFolderId) {\n throw new Error(\"`folderId` is mandatory\");\n }\n\n const { id, location, data, title, content } = record;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"UPDATE\", setLoading),\n () =>\n client.mutate<UpdateSearchRecordResponse, UpdateSearchRecordVariables>({\n mutation: UPDATE_RECORD,\n variables: { id, data: { title, content, location, data } }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while updating record\");\n }\n\n const { data: result, error } = response.search.updateRecord;\n\n if (!result) {\n throw new Error(error?.message || \"Could not update record\");\n }\n\n setRecords(records =>\n records\n .map(record => (record.id === id ? result : record))\n .filter(record => record.location.folderId === contextFolderId)\n );\n\n return result;\n },\n\n async deleteRecord(record) {\n const { id, location } = record;\n const { folderId } = location;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"DELETE\", setLoading),\n () =>\n client.mutate<DeleteSearchRecordResponse, DeleteSearchRecordVariables>({\n mutation: DELETE_RECORD,\n variables: { id }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while deleting record\");\n }\n\n const { data, error } = response.search.deleteRecord;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete record\");\n }\n\n setRecords(records => records.filter(record => record.id !== id));\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: --meta[folderId].totalCount\n }\n }));\n\n return true;\n }\n };\n\n return (\n <SearchRecordsContext.Provider value={context}>{children}</SearchRecordsContext.Provider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const CREATE_LINK: import("graphql").DocumentNode;
|
|
2
|
+
export declare const LIST_LINKS: import("graphql").DocumentNode;
|
|
3
|
+
export declare const GET_LINK: import("graphql").DocumentNode;
|
|
4
|
+
export declare const UPDATE_LINK: import("graphql").DocumentNode;
|
|
5
|
+
export declare const DELETE_LINK: import("graphql").DocumentNode;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.UPDATE_LINK = exports.LIST_LINKS = exports.GET_LINK = exports.DELETE_LINK = exports.CREATE_LINK = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
13
|
+
|
|
14
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
15
|
+
|
|
16
|
+
var ERROR_FIELD =
|
|
17
|
+
/* GraphQL */
|
|
18
|
+
"\n {\n code\n data\n message\n }\n";
|
|
19
|
+
var DATA_FIELD =
|
|
20
|
+
/* GraphQL */
|
|
21
|
+
"\n {\n id\n linkId\n folderId\n }\n";
|
|
22
|
+
var LIST_META_FIELD =
|
|
23
|
+
/* GraphQL */
|
|
24
|
+
"\n {\n cursor\n totalCount\n hasMoreItems\n }\n";
|
|
25
|
+
var CREATE_LINK = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n mutation CreateLink($data: LinkCreateInput!) {\n folders {\n createLink(data: $data) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
26
|
+
exports.CREATE_LINK = CREATE_LINK;
|
|
27
|
+
var LIST_LINKS = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query ListLinks ($folderId: ID!, $limit: Int, $after: String) {\n folders {\n listLinks(where: { folderId: $folderId }, limit: $limit, after: $after) {\n data ", "\n meta ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, LIST_META_FIELD, ERROR_FIELD);
|
|
28
|
+
exports.LIST_LINKS = LIST_LINKS;
|
|
29
|
+
var GET_LINK = (0, _graphqlTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n query GetLink ($id: ID!) {\n folders {\n getLink(id: $id) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
30
|
+
exports.GET_LINK = GET_LINK;
|
|
31
|
+
var UPDATE_LINK = (0, _graphqlTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n mutation UpdateLink($id: ID!, $data: LinkUpdateInput!) {\n folders {\n updateLink(id: $id, data: $data) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
32
|
+
exports.UPDATE_LINK = UPDATE_LINK;
|
|
33
|
+
var DELETE_LINK = (0, _graphqlTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n mutation DeleteLink($id: ID!) {\n folders {\n deleteLink(id: $id) {\n data\n error ", "\n }\n }\n }\n"])), ERROR_FIELD);
|
|
34
|
+
exports.DELETE_LINK = DELETE_LINK;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ERROR_FIELD","DATA_FIELD","LIST_META_FIELD","CREATE_LINK","gql","LIST_LINKS","GET_LINK","UPDATE_LINK","DELETE_LINK"],"sources":["links.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n code\n data\n message\n }\n`;\n\nconst DATA_FIELD = /* GraphQL */ `\n {\n id\n linkId\n folderId\n }\n`;\n\nconst LIST_META_FIELD = /* GraphQL */ `\n {\n cursor\n totalCount\n hasMoreItems\n }\n`;\n\nexport const CREATE_LINK = gql`\n mutation CreateLink($data: LinkCreateInput!) {\n folders {\n createLink(data: $data) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const LIST_LINKS = gql`\n query ListLinks ($folderId: ID!, $limit: Int, $after: String) {\n folders {\n listLinks(where: { folderId: $folderId }, limit: $limit, after: $after) {\n data ${DATA_FIELD}\n meta ${LIST_META_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const GET_LINK = gql`\n query GetLink ($id: ID!) {\n folders {\n getLink(id: $id) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const UPDATE_LINK = gql`\n mutation UpdateLink($id: ID!, $data: LinkUpdateInput!) {\n folders {\n updateLink(id: $id, data: $data) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const DELETE_LINK = gql`\n mutation DeleteLink($id: ID!) {\n folders {\n deleteLink(id: $id) {\n data\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;;;;AAAA;;;;AAEA,IAAMA,WAAW;AAAG;AAAH,+DAAjB;AAQA,IAAMC,UAAU;AAAG;AAAH,gEAAhB;AAQA,IAAMC,eAAe;AAAG;AAAH,4EAArB;AAQO,IAAMC,WAAW,OAAGC,mBAAH,6RAIDH,UAJC,EAKAD,WALA,CAAjB;;AAWA,IAAMK,UAAU,OAAGD,mBAAH,2XAIAH,UAJA,EAKAC,eALA,EAMCF,WAND,CAAhB;;AAYA,IAAMM,QAAQ,OAAGF,mBAAH,oQAIEH,UAJF,EAKGD,WALH,CAAd;;AAWA,IAAMO,WAAW,OAAGH,mBAAH,kTAIDH,UAJC,EAKAD,WALA,CAAjB;;AAWA,IAAMQ,WAAW,OAAGJ,mBAAH,uQAKAJ,WALA,CAAjB"}
|
package/graphql/records.gql.js
CHANGED
|
@@ -9,11 +9,11 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
9
9
|
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
10
10
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
11
11
|
var ERROR_FIELD = /* GraphQL */"\n {\n code\n data\n message\n }\n";
|
|
12
|
-
var DATA_FIELD = /* GraphQL */"\n {\n id\n
|
|
12
|
+
var DATA_FIELD = /* GraphQL */"\n {\n id\n type\n location {\n folderId\n }\n title\n content\n data\n savedOn\n }\n";
|
|
13
13
|
var LIST_META_FIELD = /* GraphQL */"\n {\n cursor\n totalCount\n hasMoreItems\n }\n";
|
|
14
14
|
var CREATE_RECORD = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n mutation CreateRecord($data: SearchRecordCreateInput!) {\n search {\n createRecord(data: $data) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
15
15
|
exports.CREATE_RECORD = CREATE_RECORD;
|
|
16
|
-
var LIST_RECORDS = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query ListRecords ($type: String!, $location: SearchLocationInput!, $limit: Int, $after: String) {\n search {\n listRecords(where: { type: $type, location: $location }, limit: $limit, after: $after) {\n data ", "\n meta ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, LIST_META_FIELD, ERROR_FIELD);
|
|
16
|
+
var LIST_RECORDS = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query ListRecords ($type: String!, $location: SearchLocationInput!, $limit: Int, $after: String, $sort: AcoSort!) {\n search {\n listRecords(where: { type: $type, location: $location }, limit: $limit, after: $after, sort: $sort) {\n data ", "\n meta ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, LIST_META_FIELD, ERROR_FIELD);
|
|
17
17
|
exports.LIST_RECORDS = LIST_RECORDS;
|
|
18
18
|
var GET_RECORD = (0, _graphqlTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n query GetRecord ($id: ID!) {\n search {\n getRecord(id: $id) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
19
19
|
exports.GET_RECORD = GET_RECORD;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ERROR_FIELD","DATA_FIELD","LIST_META_FIELD","CREATE_RECORD","gql","LIST_RECORDS","GET_RECORD","UPDATE_RECORD","DELETE_RECORD"],"sources":["records.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n code\n data\n message\n }\n`;\n\nconst DATA_FIELD = /* GraphQL */ `\n {\n id\n
|
|
1
|
+
{"version":3,"names":["ERROR_FIELD","DATA_FIELD","LIST_META_FIELD","CREATE_RECORD","gql","LIST_RECORDS","GET_RECORD","UPDATE_RECORD","DELETE_RECORD"],"sources":["records.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n code\n data\n message\n }\n`;\n\nconst DATA_FIELD = /* GraphQL */ `\n {\n id\n type\n location {\n folderId\n }\n title\n content\n data\n savedOn\n }\n`;\n\nconst LIST_META_FIELD = /* GraphQL */ `\n {\n cursor\n totalCount\n hasMoreItems\n }\n`;\n\nexport const CREATE_RECORD = gql`\n mutation CreateRecord($data: SearchRecordCreateInput!) {\n search {\n createRecord(data: $data) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const LIST_RECORDS = gql`\n query ListRecords ($type: String!, $location: SearchLocationInput!, $limit: Int, $after: String, $sort: AcoSort!) {\n search {\n listRecords(where: { type: $type, location: $location }, limit: $limit, after: $after, sort: $sort) {\n data ${DATA_FIELD}\n meta ${LIST_META_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const GET_RECORD = gql`\n query GetRecord ($id: ID!) {\n search {\n getRecord(id: $id) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const UPDATE_RECORD = gql`\n mutation UpdateRecord($id: ID!, $data: SearchRecordUpdateInput!) {\n search {\n updateRecord(id: $id, data: $data) {\n data ${DATA_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n\nexport const DELETE_RECORD = gql`\n mutation DeleteRecord($id: ID!) {\n search {\n deleteRecord(id: $id) {\n data\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;AAAA;AAA8B;AAE9B,IAAMA,WAAW,GAAG,4EAMnB;AAED,IAAMC,UAAU,GAAG,6KAYlB;AAED,IAAMC,eAAe,GAAG,yFAMvB;AAEM,IAAMC,aAAa,OAAGC,mBAAG,wSAITH,UAAU,EACTD,WAAW,CAIlC;AAAC;AAEK,IAAMK,YAAY,OAAGD,mBAAG,0cAIRH,UAAU,EACVC,eAAe,EACdF,WAAW,CAIlC;AAAC;AAEK,IAAMM,UAAU,OAAGF,mBAAG,uQAINH,UAAU,EACTD,WAAW,CAIlC;AAAC;AAEK,IAAMO,aAAa,OAAGH,mBAAG,6TAITH,UAAU,EACTD,WAAW,CAIlC;AAAC;AAEK,IAAMQ,aAAa,OAAGJ,mBAAG,0QAKRJ,WAAW,CAIlC;AAAC"}
|
package/hooks/index.d.ts
CHANGED
package/hooks/index.js
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _useAcoList = require("./useAcoList");
|
|
7
|
+
Object.keys(_useAcoList).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _useAcoList[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return _useAcoList[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
6
17
|
var _useFolders = require("./useFolders");
|
|
7
18
|
Object.keys(_useFolders).forEach(function (key) {
|
|
8
19
|
if (key === "default" || key === "__esModule") return;
|
package/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./useFolders\";\nexport * from \"./useRecords\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./useAcoList\";\nexport * from \"./useFolders\";\nexport * from \"./useRecords\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FolderItem, ListDbSort, SearchRecordItem } from "../types";
|
|
2
|
+
export declare const useAcoList: (type: string, originalFolderId?: string) => {
|
|
3
|
+
folders: FolderItem[];
|
|
4
|
+
records: SearchRecordItem<import("../types").GenericSearchData>[];
|
|
5
|
+
listTitle: string | undefined;
|
|
6
|
+
isListLoading: boolean | undefined;
|
|
7
|
+
isListLoadingMore: boolean | undefined;
|
|
8
|
+
meta: {
|
|
9
|
+
cursor: string | null;
|
|
10
|
+
totalCount: number;
|
|
11
|
+
hasMoreItems: boolean;
|
|
12
|
+
};
|
|
13
|
+
listItems(params: {
|
|
14
|
+
after?: string | undefined;
|
|
15
|
+
limit?: number | undefined;
|
|
16
|
+
sort?: ListDbSort | undefined;
|
|
17
|
+
}): Promise<SearchRecordItem<import("../types").GenericSearchData>[]>;
|
|
18
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useAcoList = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _useDeepCompareEffect = _interopRequireDefault(require("use-deep-compare-effect"));
|
|
12
|
+
var _folders = require("../contexts/folders");
|
|
13
|
+
var _records = require("../contexts/records");
|
|
14
|
+
var _sorting = require("../sorting");
|
|
15
|
+
var useAcoList = function useAcoList(type, originalFolderId) {
|
|
16
|
+
var folderContext = (0, _react.useContext)(_folders.FoldersContext);
|
|
17
|
+
var searchContext = (0, _react.useContext)(_records.SearchRecordsContext);
|
|
18
|
+
if (!folderContext || !searchContext) {
|
|
19
|
+
throw new Error("useAcoList must be used within a ACOProvider");
|
|
20
|
+
}
|
|
21
|
+
var _useState = (0, _react.useState)([]),
|
|
22
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
23
|
+
folders = _useState2[0],
|
|
24
|
+
setFolders = _useState2[1];
|
|
25
|
+
var _useState3 = (0, _react.useState)([]),
|
|
26
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
27
|
+
records = _useState4[0],
|
|
28
|
+
setRecords = _useState4[1];
|
|
29
|
+
var _useState5 = (0, _react.useState)(),
|
|
30
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
31
|
+
listTitle = _useState6[0],
|
|
32
|
+
setListTitle = _useState6[1];
|
|
33
|
+
var _useState7 = (0, _react.useState)(),
|
|
34
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
35
|
+
sort = _useState8[0],
|
|
36
|
+
setSort = _useState8[1];
|
|
37
|
+
var originalFolders = folderContext.folders,
|
|
38
|
+
foldersLoading = folderContext.loading,
|
|
39
|
+
listFolders = folderContext.listFolders;
|
|
40
|
+
var originalRecords = searchContext.records,
|
|
41
|
+
recordsLoading = searchContext.loading,
|
|
42
|
+
listRecords = searchContext.listRecords,
|
|
43
|
+
meta = searchContext.meta;
|
|
44
|
+
var folderId = originalFolderId || "ROOT";
|
|
45
|
+
var getCurrentFolderList = function getCurrentFolderList(folders, currentFolderId) {
|
|
46
|
+
if (!folders) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
if (currentFolderId) {
|
|
50
|
+
return folders.filter(function (folder) {
|
|
51
|
+
return folder.parentId === currentFolderId;
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
return folders.filter(function (folder) {
|
|
55
|
+
return !folder.parentId;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* On first mount, call `listFolders` and `listRecords`, which will either issue a network request, or load folders and records from cache.
|
|
62
|
+
* We don't need to store the result of it to any local state; that is managed by the context provider.
|
|
63
|
+
*
|
|
64
|
+
* IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and
|
|
65
|
+
* fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only
|
|
66
|
+
* at the first mount.
|
|
67
|
+
*
|
|
68
|
+
* We also pass the current `sort` state to `listRecords` so we are able to fetch records according to the previous `sort` value set by the user.
|
|
69
|
+
*/
|
|
70
|
+
(0, _react.useEffect)(function () {
|
|
71
|
+
if (!originalFolders[type]) {
|
|
72
|
+
listFolders(type);
|
|
73
|
+
}
|
|
74
|
+
listRecords({
|
|
75
|
+
type: type,
|
|
76
|
+
folderId: folderId,
|
|
77
|
+
sort: sort
|
|
78
|
+
});
|
|
79
|
+
}, [type, folderId]);
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Any time we receive a `folders` list update:
|
|
83
|
+
* - we return the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;
|
|
84
|
+
* - we return the current folder name.
|
|
85
|
+
*/
|
|
86
|
+
(0, _useDeepCompareEffect.default)(function () {
|
|
87
|
+
var _originalFolders$type;
|
|
88
|
+
var subFolders = getCurrentFolderList(originalFolders[type], originalFolderId);
|
|
89
|
+
setFolders((0, _sorting.sortTableItems)(subFolders, sort));
|
|
90
|
+
var currentFolder = (_originalFolders$type = originalFolders[type]) === null || _originalFolders$type === void 0 ? void 0 : _originalFolders$type.find(function (folder) {
|
|
91
|
+
return folder.id === originalFolderId;
|
|
92
|
+
});
|
|
93
|
+
setListTitle((currentFolder === null || currentFolder === void 0 ? void 0 : currentFolder.title) || undefined);
|
|
94
|
+
}, [(0, _objectSpread2.default)({}, originalFolders[type]), folderId]);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Any time we receive a `records` list or `folderId` update:
|
|
98
|
+
* - we return the `records` list filtered by the current `folderId`.
|
|
99
|
+
*/
|
|
100
|
+
(0, _useDeepCompareEffect.default)(function () {
|
|
101
|
+
var subRecords = originalRecords.filter(function (record) {
|
|
102
|
+
return record.location.folderId === folderId;
|
|
103
|
+
});
|
|
104
|
+
setRecords(subRecords);
|
|
105
|
+
}, [(0, _objectSpread2.default)({}, originalRecords), folderId]);
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Any time we receive a new `sort` value:
|
|
109
|
+
* - we sort the current `folders` list according to `sort` value;
|
|
110
|
+
*/
|
|
111
|
+
(0, _react.useEffect)(function () {
|
|
112
|
+
setFolders(function (folders) {
|
|
113
|
+
return (0, _sorting.sortTableItems)(folders, sort);
|
|
114
|
+
});
|
|
115
|
+
}, [sort]);
|
|
116
|
+
return (0, _react.useMemo)(function () {
|
|
117
|
+
return {
|
|
118
|
+
folders: folders,
|
|
119
|
+
records: records,
|
|
120
|
+
listTitle: listTitle,
|
|
121
|
+
isListLoading: recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST,
|
|
122
|
+
isListLoadingMore: recordsLoading.LIST_MORE,
|
|
123
|
+
meta: meta[folderId] || {},
|
|
124
|
+
listItems: function listItems(params) {
|
|
125
|
+
// We store `sort` param to local state to handle `folders` and future `records` sorting.
|
|
126
|
+
if (params.sort && Object.values(params.sort).length > 0) {
|
|
127
|
+
setSort((0, _sorting.validateOrGetDefaultDbSort)(params.sort));
|
|
128
|
+
}
|
|
129
|
+
return listRecords((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
130
|
+
type: type,
|
|
131
|
+
folderId: folderId
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}, [folders, records, foldersLoading, recordsLoading, meta]);
|
|
136
|
+
};
|
|
137
|
+
exports.useAcoList = useAcoList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useAcoList","type","originalFolderId","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","useState","folders","setFolders","records","setRecords","listTitle","setListTitle","sort","setSort","originalFolders","foldersLoading","loading","listFolders","originalRecords","recordsLoading","listRecords","meta","folderId","getCurrentFolderList","currentFolderId","filter","folder","parentId","useEffect","useDeepCompareEffect","subFolders","sortTableItems","currentFolder","find","id","title","undefined","subRecords","record","location","useMemo","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","listItems","params","Object","values","length","validateOrGetDefaultDbSort"],"sources":["useAcoList.ts"],"sourcesContent":["import { useContext, useEffect, useMemo, useState } from \"react\";\n\nimport useDeepCompareEffect from \"use-deep-compare-effect\";\n\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\n\nimport { FolderItem, ListDbSort, SearchRecordItem } from \"~/types\";\n\nexport const useAcoList = (type: string, originalFolderId?: string) => {\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useState<FolderItem[]>([]);\n const [records, setRecords] = useState<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useState<string | undefined>();\n const [sort, setSort] = useState<ListDbSort>();\n\n const { folders: originalFolders, loading: foldersLoading, listFolders } = folderContext;\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n const folderId = originalFolderId || \"ROOT\";\n\n const getCurrentFolderList = (\n folders: FolderItem[],\n currentFolderId?: string\n ): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (currentFolderId) {\n return folders.filter(folder => folder.parentId === currentFolderId);\n } else {\n return folders.filter(folder => !folder.parentId);\n }\n };\n\n /**\n * On first mount, call `listFolders` and `listRecords`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\n *\n * We also pass the current `sort` state to `listRecords` so we are able to fetch records according to the previous `sort` value set by the user.\n */\n useEffect(() => {\n if (!originalFolders[type]) {\n listFolders(type);\n }\n\n listRecords({ type, folderId, sort });\n }, [type, folderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we return the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we return the current folder name.\n */\n useDeepCompareEffect(() => {\n const subFolders = getCurrentFolderList(originalFolders[type], originalFolderId);\n setFolders(sortTableItems(subFolders, sort));\n\n const currentFolder = originalFolders[type]?.find(folder => folder.id === originalFolderId);\n setListTitle(currentFolder?.title || undefined);\n }, [{ ...originalFolders[type] }, folderId]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we return the `records` list filtered by the current `folderId`.\n */\n useDeepCompareEffect(() => {\n const subRecords = originalRecords.filter(record => record.location.folderId === folderId);\n setRecords(subRecords);\n }, [{ ...originalRecords }, folderId]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sort` value;\n */\n useEffect(() => {\n setFolders(folders => sortTableItems(folders, sort));\n }, [sort]);\n\n return useMemo(\n () => ({\n folders,\n records,\n listTitle,\n isListLoading:\n recordsLoading.INIT ||\n foldersLoading.INIT ||\n recordsLoading.LIST ||\n foldersLoading.LIST,\n isListLoadingMore: recordsLoading.LIST_MORE,\n meta: meta[folderId] || {},\n listItems(params: { after?: string; limit?: number; sort?: ListDbSort }) {\n // We store `sort` param to local state to handle `folders` and future `records` sorting.\n if (params.sort && Object.values(params.sort).length > 0) {\n setSort(validateOrGetDefaultDbSort(params.sort));\n }\n\n return listRecords({ ...params, type, folderId });\n }\n }),\n [folders, records, foldersLoading, recordsLoading, meta]\n );\n};\n"],"mappings":"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"}
|