@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.
Files changed (84) hide show
  1. package/README.md +107 -47
  2. package/components/Dialogs/DialogCreate.d.ts +1 -1
  3. package/components/Dialogs/DialogCreate.js +55 -28
  4. package/components/Dialogs/DialogCreate.js.map +1 -1
  5. package/components/Dialogs/DialogDelete.js +1 -1
  6. package/components/Dialogs/DialogDelete.js.map +1 -1
  7. package/components/Dialogs/DialogMove.d.ts +11 -0
  8. package/components/Dialogs/DialogMove.js +115 -0
  9. package/components/Dialogs/DialogMove.js.map +1 -0
  10. package/components/Dialogs/DialogUpdate.js +30 -45
  11. package/components/Dialogs/DialogUpdate.js.map +1 -1
  12. package/components/Dialogs/styled.d.ts +15 -5
  13. package/components/Dialogs/styled.js +8 -3
  14. package/components/Dialogs/styled.js.map +1 -1
  15. package/components/Tree/ButtonCreate/styled.d.ts +12 -12
  16. package/components/Tree/ButtonCreate/styled.js +1 -1
  17. package/components/Tree/ButtonCreate/styled.js.map +1 -1
  18. package/components/Tree/Empty/styled.d.ts +5 -2
  19. package/components/Tree/List/index.d.ts +3 -1
  20. package/components/Tree/List/index.js +4 -1
  21. package/components/Tree/List/index.js.map +1 -1
  22. package/components/Tree/List/utils.d.ts +2 -1
  23. package/components/Tree/List/utils.js +4 -0
  24. package/components/Tree/List/utils.js.map +1 -1
  25. package/components/Tree/Loader/index.js +2 -1
  26. package/components/Tree/Loader/index.js.map +1 -1
  27. package/components/Tree/Loader/styled.d.ts +9 -3
  28. package/components/Tree/MenuActions/index.js +10 -3
  29. package/components/Tree/MenuActions/index.js.map +1 -1
  30. package/components/Tree/MenuActions/styled.d.ts +8 -2
  31. package/components/Tree/MenuActions/styled.js +8 -2
  32. package/components/Tree/MenuActions/styled.js.map +1 -1
  33. package/components/Tree/Node/index.d.ts +4 -2
  34. package/components/Tree/Node/index.js +11 -6
  35. package/components/Tree/Node/index.js.map +1 -1
  36. package/components/Tree/Node/styled.d.ts +29 -24
  37. package/components/Tree/Node/styled.js +4 -4
  38. package/components/Tree/Node/styled.js.map +1 -1
  39. package/components/Tree/NodePreview/styled.d.ts +5 -2
  40. package/components/Tree/Placeholder/styled.d.ts +5 -2
  41. package/components/Tree/Title/styled.d.ts +9 -3
  42. package/components/Tree/Title/styled.js +1 -1
  43. package/components/Tree/Title/styled.js.map +1 -1
  44. package/components/Tree/index.d.ts +3 -0
  45. package/components/Tree/index.js +8 -3
  46. package/components/Tree/index.js.map +1 -1
  47. package/components/Tree/styled.d.ts +5 -2
  48. package/components/Tree/styled.js +1 -1
  49. package/components/Tree/styled.js.map +1 -1
  50. package/contexts/folders.js +1 -1
  51. package/contexts/folders.js.map +1 -1
  52. package/contexts/links.d.ts +18 -0
  53. package/contexts/links.js +371 -0
  54. package/contexts/links.js.map +1 -0
  55. package/contexts/records.d.ts +12 -6
  56. package/contexts/records.js +97 -36
  57. package/contexts/records.js.map +1 -1
  58. package/graphql/links.gql.d.ts +5 -0
  59. package/graphql/links.gql.js +34 -0
  60. package/graphql/links.gql.js.map +1 -0
  61. package/graphql/records.gql.js +2 -2
  62. package/graphql/records.gql.js.map +1 -1
  63. package/hooks/index.d.ts +1 -0
  64. package/hooks/index.js +11 -0
  65. package/hooks/index.js.map +1 -1
  66. package/hooks/useAcoList.d.ts +18 -0
  67. package/hooks/useAcoList.js +137 -0
  68. package/hooks/useAcoList.js.map +1 -0
  69. package/hooks/useLinks.d.ts +20 -0
  70. package/hooks/useLinks.js +65 -0
  71. package/hooks/useLinks.js.map +1 -0
  72. package/hooks/useRecords.d.ts +12 -8
  73. package/hooks/useRecords.js +16 -6
  74. package/hooks/useRecords.js.map +1 -1
  75. package/index.d.ts +1 -1
  76. package/index.js +6 -0
  77. package/index.js.map +1 -1
  78. package/package.json +13 -11
  79. package/sorting.d.ts +3 -0
  80. package/sorting.js +32 -0
  81. package/sorting.js.map +1 -0
  82. package/types.d.ts +21 -5
  83. package/types.js +14 -1
  84. package/types.js.map +1 -1
@@ -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(type, folderId) {
50
- var _arguments = arguments;
51
+ listRecords: function listRecords(params) {
51
52
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
52
- var limit, after, action, _yield$apolloFetching, response, _response$search$list, data, responseMeta, error;
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
- limit = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : 10;
57
- after = _arguments.length > 3 ? _arguments[3] : undefined;
58
- if (folderId) {
59
- _context.next = 4;
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` is mandatory");
63
- case 4:
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
- _context.next = 7;
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 7:
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 = 12;
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 12:
115
+ case 17:
116
+ // Adjusting sorting while merging records with data received from the server.
89
117
  setRecords(function (records) {
90
- return (0, _toConsumableArray2.default)(new Set([].concat((0, _toConsumableArray2.default)(records), (0, _toConsumableArray2.default)(data))));
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 16:
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 (data) {
162
+ if (!(error && error.code !== "NOT_FOUND")) {
134
163
  _context2.next = 9;
135
164
  break;
136
165
  }
137
- throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch record with id: ".concat(id));
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 10:
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, data, error;
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
- id = record.id, location = record.location;
203
- _context4.next = 3;
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
- location: location
268
+ title: title,
269
+ content: content,
270
+ location: location,
271
+ data: data
211
272
  }
212
273
  }
213
274
  });
214
275
  });
215
- case 3:
276
+ case 5:
216
277
  _yield$apolloFetching4 = _context4.sent;
217
278
  response = _yield$apolloFetching4.data;
218
279
  if (response) {
219
- _context4.next = 7;
280
+ _context4.next = 9;
220
281
  break;
221
282
  }
222
283
  throw new Error("Network error while updating record");
223
- case 7:
224
- _response$search$upda = response.search.updateRecord, data = _response$search$upda.data, error = _response$search$upda.error;
225
- if (data) {
226
- _context4.next = 10;
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 10:
291
+ case 12:
231
292
  setRecords(function (records) {
232
293
  return records.map(function (record) {
233
- return record.id === id ? data : record;
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", data);
239
- case 12:
299
+ return _context4.abrupt("return", result);
300
+ case 14:
240
301
  case "end":
241
302
  return _context4.stop();
242
303
  }
@@ -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"}
@@ -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 originalId\n type\n location {\n folderId\n }\n title\n content\n data\n }\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 originalId\n type\n location {\n folderId\n }\n title\n content\n data\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) {\n search {\n listRecords(where: { type: $type, location: $location }, 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_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,gLAYlB;AAED,IAAMC,eAAe,GAAG,yFAMvB;AAEM,IAAMC,aAAa,OAAGC,mBAAG,wSAITH,UAAU,EACTD,WAAW,CAIlC;AAAC;AAEK,IAAMK,YAAY,OAAGD,mBAAG,4aAIRH,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"}
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
@@ -1,2 +1,3 @@
1
+ export * from "./useAcoList";
1
2
  export * from "./useFolders";
2
3
  export * from "./useRecords";
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;
@@ -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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"}