@webiny/app-aco 5.35.2 → 5.36.0-beta.1
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/components/Dialogs/DialogCreate.d.ts +2 -2
- package/components/Dialogs/DialogCreate.js +1 -1
- package/components/Dialogs/DialogCreate.js.map +1 -1
- package/components/Dialogs/DialogDelete.d.ts +3 -3
- package/components/Dialogs/DialogDelete.js +1 -1
- package/components/Dialogs/DialogDelete.js.map +1 -1
- package/components/Dialogs/DialogMove.d.ts +2 -2
- package/components/Dialogs/DialogMove.js +4 -3
- package/components/Dialogs/DialogMove.js.map +1 -1
- package/components/Dialogs/DialogUpdate.d.ts +2 -2
- package/components/Dialogs/DialogUpdate.js +1 -1
- package/components/Dialogs/DialogUpdate.js.map +1 -1
- package/components/Dialogs/index.d.ts +1 -0
- package/components/Dialogs/index.js +11 -0
- package/components/Dialogs/index.js.map +1 -1
- package/components/Dialogs/styled.js +1 -1
- package/components/Dialogs/styled.js.map +1 -1
- package/components/FolderGrid/ActionDelete.d.ts +6 -0
- package/components/FolderGrid/ActionDelete.js +25 -0
- package/components/FolderGrid/ActionDelete.js.map +1 -0
- package/components/FolderGrid/ActionEdit.d.ts +6 -0
- package/components/FolderGrid/ActionEdit.js +25 -0
- package/components/FolderGrid/ActionEdit.js.map +1 -0
- package/components/FolderGrid/Folder.d.ts +9 -0
- package/components/FolderGrid/Folder.js +42 -0
- package/components/FolderGrid/Folder.js.map +1 -0
- package/components/FolderGrid/FolderGrid.d.ts +8 -0
- package/components/FolderGrid/FolderGrid.js +60 -0
- package/components/FolderGrid/FolderGrid.js.map +1 -0
- package/components/FolderGrid/index.d.ts +1 -0
- package/components/FolderGrid/index.js +16 -0
- package/components/FolderGrid/index.js.map +1 -0
- package/components/FolderGrid/styled.d.ts +53 -0
- package/components/FolderGrid/styled.js +41 -0
- package/components/FolderGrid/styled.js.map +1 -0
- package/components/FolderTree/ButtonCreate/index.d.ts +6 -0
- package/components/FolderTree/ButtonCreate/index.js +23 -0
- package/components/FolderTree/ButtonCreate/index.js.map +1 -0
- package/components/FolderTree/ButtonCreate/styled.d.ts +18 -0
- package/components/FolderTree/ButtonCreate/styled.js +24 -0
- package/components/FolderTree/ButtonCreate/styled.js.map +1 -0
- package/components/FolderTree/Empty/index.d.ts +2 -0
- package/components/FolderTree/Empty/index.js +20 -0
- package/components/FolderTree/Empty/index.js.map +1 -0
- package/components/FolderTree/Empty/styled.d.ts +7 -0
- package/components/FolderTree/Empty/styled.js +13 -0
- package/components/FolderTree/Empty/styled.js.map +1 -0
- package/components/FolderTree/List/constants.d.ts +1 -0
- package/components/FolderTree/List/constants.js +8 -0
- package/components/FolderTree/List/constants.js.map +1 -0
- package/components/FolderTree/List/index.d.ts +15 -0
- package/components/FolderTree/List/index.js +195 -0
- package/components/FolderTree/List/index.js.map +1 -0
- package/components/FolderTree/List/utils.d.ts +21 -0
- package/components/FolderTree/List/utils.js +88 -0
- package/components/FolderTree/List/utils.js.map +1 -0
- package/components/FolderTree/Loader/index.d.ts +2 -0
- package/components/FolderTree/Loader/index.js +19 -0
- package/components/FolderTree/Loader/index.js.map +1 -0
- package/components/FolderTree/Loader/styled.d.ts +11 -0
- package/components/FolderTree/Loader/styled.js +18 -0
- package/components/FolderTree/Loader/styled.js.map +1 -0
- package/components/FolderTree/MenuActions/index.d.ts +9 -0
- package/components/FolderTree/MenuActions/index.js +45 -0
- package/components/FolderTree/MenuActions/index.js.map +1 -0
- package/components/FolderTree/MenuActions/styled.d.ts +10 -0
- package/components/FolderTree/MenuActions/styled.js +19 -0
- package/components/FolderTree/MenuActions/styled.js.map +1 -0
- package/components/FolderTree/Node/index.d.ts +21 -0
- package/components/FolderTree/Node/index.js +68 -0
- package/components/FolderTree/Node/index.js.map +1 -0
- package/components/FolderTree/Node/styled.d.ts +43 -0
- package/components/FolderTree/Node/styled.js +43 -0
- package/components/FolderTree/Node/styled.js.map +1 -0
- package/components/FolderTree/NodePreview/index.d.ts +8 -0
- package/components/FolderTree/NodePreview/index.js +18 -0
- package/components/FolderTree/NodePreview/index.js.map +1 -0
- package/components/FolderTree/NodePreview/styled.d.ts +7 -0
- package/components/FolderTree/NodePreview/styled.js +13 -0
- package/components/FolderTree/NodePreview/styled.js.map +1 -0
- package/components/FolderTree/Placeholder/index.d.ts +9 -0
- package/components/FolderTree/Placeholder/index.js +21 -0
- package/components/FolderTree/Placeholder/index.js.map +1 -0
- package/components/FolderTree/Placeholder/styled.d.ts +7 -0
- package/components/FolderTree/Placeholder/styled.js +13 -0
- package/components/FolderTree/Placeholder/styled.js.map +1 -0
- package/components/FolderTree/Title/index.d.ts +9 -0
- package/components/FolderTree/Title/index.js +24 -0
- package/components/FolderTree/Title/index.js.map +1 -0
- package/components/FolderTree/Title/styled.d.ts +16 -0
- package/components/FolderTree/Title/styled.js +24 -0
- package/components/FolderTree/Title/styled.js.map +1 -0
- package/components/FolderTree/index.d.ts +16 -0
- package/components/FolderTree/index.js +84 -0
- package/components/FolderTree/index.js.map +1 -0
- package/components/FolderTree/styled.d.ts +7 -0
- package/components/FolderTree/styled.js +13 -0
- package/components/FolderTree/styled.js.map +1 -0
- package/components/TagList/Empty.d.ts +6 -0
- package/components/TagList/Empty.js +22 -0
- package/components/TagList/Empty.js.map +1 -0
- package/components/TagList/Loader.d.ts +2 -0
- package/components/TagList/Loader.js +19 -0
- package/components/TagList/Loader.js.map +1 -0
- package/components/TagList/Tag.d.ts +9 -0
- package/components/TagList/Tag.js +28 -0
- package/components/TagList/Tag.js.map +1 -0
- package/components/TagList/TagList.d.ts +14 -0
- package/components/TagList/TagList.js +65 -0
- package/components/TagList/TagList.js.map +1 -0
- package/components/TagList/index.d.ts +1 -0
- package/components/TagList/index.js +16 -0
- package/components/TagList/index.js.map +1 -0
- package/components/TagList/styled.d.ts +27 -0
- package/components/TagList/styled.js +35 -0
- package/components/TagList/styled.js.map +1 -0
- package/components/index.d.ts +3 -1
- package/components/index.js +26 -4
- package/components/index.js.map +1 -1
- package/contexts/records.d.ts +15 -2
- package/contexts/records.js +155 -42
- package/contexts/records.js.map +1 -1
- package/graphql/records.gql.d.ts +1 -0
- package/graphql/records.gql.js +7 -5
- 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 +19 -4
- package/hooks/useAcoList.js +31 -18
- package/hooks/useAcoList.js.map +1 -1
- package/hooks/useRecords.d.ts +4 -1
- package/hooks/useRecords.js +2 -4
- package/hooks/useRecords.js.map +1 -1
- package/hooks/useTags.d.ts +19 -0
- package/hooks/useTags.js +47 -0
- package/hooks/useTags.js.map +1 -0
- package/index.d.ts +2 -2
- package/index.js +24 -24
- package/index.js.map +1 -1
- package/package.json +9 -9
- package/types.d.ts +37 -2
- package/types.js.map +1 -1
package/contexts/records.js
CHANGED
|
@@ -9,11 +9,12 @@ exports.SearchRecordsProvider = exports.SearchRecordsContext = void 0;
|
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
-
var
|
|
12
|
+
var _objectSpread18 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
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 _sortBy = _interopRequireDefault(require("lodash/sortBy"));
|
|
17
18
|
var _unionBy = _interopRequireDefault(require("lodash/unionBy"));
|
|
18
19
|
var _handlers = require("../handlers");
|
|
19
20
|
var _records = require("../graphql/records.gql");
|
|
@@ -29,52 +30,70 @@ var defaultLoading = {
|
|
|
29
30
|
UPDATE: false,
|
|
30
31
|
DELETE: false
|
|
31
32
|
};
|
|
33
|
+
var mergeAndSortTags = function mergeAndSortTags(oldTagItems, newTags) {
|
|
34
|
+
if (!newTags.length) {
|
|
35
|
+
return oldTagItems;
|
|
36
|
+
}
|
|
37
|
+
var newTagItems = newTags.map(function (tag) {
|
|
38
|
+
return {
|
|
39
|
+
tag: tag
|
|
40
|
+
};
|
|
41
|
+
}); // create TagItem[] from array of strings
|
|
42
|
+
var mergedTagItems = (0, _unionBy.default)(oldTagItems, newTagItems, "tag"); // merge the two arrays
|
|
43
|
+
|
|
44
|
+
return (0, _sortBy.default)(mergedTagItems, ["tag"]);
|
|
45
|
+
};
|
|
32
46
|
var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
33
47
|
var children = _ref.children;
|
|
34
48
|
var client = (0, _reactHooks.useApolloClient)();
|
|
35
|
-
var _useState = (0, _react.useState)(
|
|
49
|
+
var _useState = (0, _react.useState)(Object.create(null)),
|
|
36
50
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
37
51
|
records = _useState2[0],
|
|
38
52
|
setRecords = _useState2[1];
|
|
39
|
-
var _useState3 = (0, _react.useState)(
|
|
53
|
+
var _useState3 = (0, _react.useState)(Object.create(null)),
|
|
40
54
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var _useState5 = (0, _react.useState)(
|
|
55
|
+
tags = _useState4[0],
|
|
56
|
+
setTags = _useState4[1];
|
|
57
|
+
var _useState5 = (0, _react.useState)(defaultLoading),
|
|
44
58
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
loading = _useState6[0],
|
|
60
|
+
setLoading = _useState6[1];
|
|
61
|
+
var _useState7 = (0, _react.useState)(Object.create(null)),
|
|
62
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
63
|
+
meta = _useState8[0],
|
|
64
|
+
setMeta = _useState8[1];
|
|
47
65
|
var context = {
|
|
48
66
|
records: records,
|
|
67
|
+
tags: tags,
|
|
49
68
|
loading: loading,
|
|
50
69
|
meta: meta,
|
|
51
70
|
listRecords: function listRecords(params) {
|
|
52
71
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
53
|
-
var _meta
|
|
54
|
-
var type, folderId, after, limit, sorting, recordsCount, totalCount, action, sort, _yield$apolloFetching, response, _response$search$list, data, responseMeta, error;
|
|
72
|
+
var _meta;
|
|
73
|
+
var type, folderId, after, limit, sorting, search, createdBy, tags_in, tags_startsWith, tags_not_startsWith, AND, OR, recordsCount, totalCount, action, sort, _yield$apolloFetching, response, _response$search$list, data, responseMeta, error;
|
|
55
74
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
56
75
|
while (1) switch (_context.prev = _context.next) {
|
|
57
76
|
case 0:
|
|
58
|
-
type = params.type, folderId = params.folderId, after = params.after, limit = params.limit, sorting = params.sort;
|
|
77
|
+
type = params.type, folderId = params.folderId, after = params.after, limit = params.limit, sorting = params.sort, search = params.search, createdBy = params.createdBy, tags_in = params.tags_in, tags_startsWith = params.tags_startsWith, tags_not_startsWith = params.tags_not_startsWith, AND = params.AND, OR = params.OR;
|
|
59
78
|
/**
|
|
60
79
|
* Both folderId and type are optional to init `useRecords` but required to list records:
|
|
61
80
|
* this allows us to use `useRecords` methods like `getRecord` without passing useless params.
|
|
62
81
|
* But still, we need these params to list records.
|
|
63
82
|
*/
|
|
64
|
-
if (
|
|
83
|
+
if (type) {
|
|
65
84
|
_context.next = 3;
|
|
66
85
|
break;
|
|
67
86
|
}
|
|
68
|
-
throw new Error("`
|
|
87
|
+
throw new Error("`type` are mandatory");
|
|
69
88
|
case 3:
|
|
70
89
|
/**
|
|
71
90
|
* Avoiding to fetch records in case they have already been fetched.
|
|
72
91
|
* This happens when visiting a list with all records loaded and receives "after" param.
|
|
73
92
|
*/
|
|
74
|
-
recordsCount = records.filter(function (record) {
|
|
93
|
+
recordsCount = records[type] && records[type].filter(function (record) {
|
|
75
94
|
return record.location.folderId === folderId;
|
|
76
95
|
}).length;
|
|
77
|
-
totalCount = ((_meta
|
|
96
|
+
totalCount = ((_meta = meta[folderId || "search"]) === null || _meta === void 0 ? void 0 : _meta.totalCount) || 0;
|
|
78
97
|
if (!(after && recordsCount === totalCount)) {
|
|
79
98
|
_context.next = 7;
|
|
80
99
|
break;
|
|
@@ -83,7 +102,9 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
83
102
|
case 7:
|
|
84
103
|
// Remove records in case of sorting change and not a paginated request.
|
|
85
104
|
if (sorting && !after) {
|
|
86
|
-
setRecords(
|
|
105
|
+
setRecords(function (records) {
|
|
106
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, type, []));
|
|
107
|
+
});
|
|
87
108
|
}
|
|
88
109
|
action = after ? "LIST_MORE" : "LIST";
|
|
89
110
|
sort = (0, _sorting.validateOrGetDefaultDbSort)(sorting);
|
|
@@ -92,10 +113,21 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
92
113
|
return client.query({
|
|
93
114
|
query: _records.LIST_RECORDS,
|
|
94
115
|
variables: {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
116
|
+
where: (0, _objectSpread18.default)((0, _objectSpread18.default)({
|
|
117
|
+
type: type
|
|
118
|
+
}, folderId && {
|
|
119
|
+
location: {
|
|
120
|
+
folderId: folderId
|
|
121
|
+
}
|
|
122
|
+
}), {}, {
|
|
123
|
+
tags_in: tags_in,
|
|
124
|
+
tags_startsWith: tags_startsWith,
|
|
125
|
+
tags_not_startsWith: tags_not_startsWith,
|
|
126
|
+
createdBy: createdBy,
|
|
127
|
+
AND: AND,
|
|
128
|
+
OR: OR
|
|
129
|
+
}),
|
|
130
|
+
search: search,
|
|
99
131
|
limit: limit,
|
|
100
132
|
after: after,
|
|
101
133
|
sort: sort
|
|
@@ -113,15 +145,20 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
113
145
|
}
|
|
114
146
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch records");
|
|
115
147
|
case 17:
|
|
116
|
-
// Adjusting sorting while merging records with data received from the server.
|
|
117
148
|
setRecords(function (records) {
|
|
118
|
-
|
|
149
|
+
// In case of paginated request, we merge the fetched records with the existing ones, after sorting them.
|
|
150
|
+
if (after) {
|
|
151
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, type, (0, _sorting.sortTableItems)((0, _unionBy.default)(data, records[type], "id"), sort)));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Otherwise, we return the fetched records after sorting them.
|
|
155
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, type, (0, _sorting.sortTableItems)(data, sort)));
|
|
119
156
|
});
|
|
120
157
|
setMeta(function (meta) {
|
|
121
|
-
return (0,
|
|
158
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId || "search", responseMeta));
|
|
122
159
|
});
|
|
123
160
|
setLoading(function (prev) {
|
|
124
|
-
return (0,
|
|
161
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, prev), {}, {
|
|
125
162
|
INIT: false
|
|
126
163
|
});
|
|
127
164
|
});
|
|
@@ -168,25 +205,42 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
168
205
|
if (!data) {
|
|
169
206
|
// No record found - must be deleted by previous operation
|
|
170
207
|
setRecords(function (records) {
|
|
171
|
-
|
|
172
|
-
return
|
|
208
|
+
var currentRecord = Object.keys(records).reduce(function (accumulator, current) {
|
|
209
|
+
return [].concat((0, _toConsumableArray2.default)(accumulator), (0, _toConsumableArray2.default)(records[current]));
|
|
210
|
+
}, []).find(function (record) {
|
|
211
|
+
return record.id === id;
|
|
173
212
|
});
|
|
213
|
+
if (!currentRecord) {
|
|
214
|
+
return records;
|
|
215
|
+
}
|
|
216
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, currentRecord.type, records[currentRecord.type].filter(function (record) {
|
|
217
|
+
return record.id !== id;
|
|
218
|
+
})));
|
|
174
219
|
});
|
|
175
220
|
} else {
|
|
176
221
|
setRecords(function (prevRecords) {
|
|
177
|
-
var
|
|
222
|
+
var prevRecordsByType = prevRecords[data.type];
|
|
223
|
+
var recordIndex = prevRecordsByType.findIndex(function (record) {
|
|
178
224
|
return record.id === id;
|
|
179
225
|
});
|
|
180
226
|
|
|
181
227
|
// No record found in the list - must be added by previous operation
|
|
182
228
|
if (recordIndex === -1) {
|
|
183
|
-
return
|
|
229
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, prevRecords), {}, (0, _defineProperty2.default)({}, data.type, [data].concat((0, _toConsumableArray2.default)(prevRecordsByType))));
|
|
184
230
|
}
|
|
185
231
|
|
|
186
232
|
// Updating record found in the list
|
|
187
|
-
var result = [].concat((0, _toConsumableArray2.default)(
|
|
233
|
+
var result = (0, _objectSpread18.default)((0, _objectSpread18.default)({}, prevRecords), {}, (0, _defineProperty2.default)({}, data.type, [].concat((0, _toConsumableArray2.default)(prevRecordsByType.slice(0, recordIndex)), [(0, _objectSpread18.default)((0, _objectSpread18.default)({}, prevRecordsByType[recordIndex]), data)], (0, _toConsumableArray2.default)(prevRecordsByType.slice(recordIndex + 1)))));
|
|
188
234
|
return result;
|
|
189
235
|
});
|
|
236
|
+
setTags(function (tags) {
|
|
237
|
+
if (!data.tags || data.tags.length === 0) {
|
|
238
|
+
return tags;
|
|
239
|
+
}
|
|
240
|
+
var tagsByType = tags[data.type]; // get existing tags
|
|
241
|
+
|
|
242
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, tags), {}, (0, _defineProperty2.default)({}, data.type, mergeAndSortTags(tagsByType, data.tags)));
|
|
243
|
+
});
|
|
190
244
|
}
|
|
191
245
|
return _context2.abrupt("return", data);
|
|
192
246
|
case 11:
|
|
@@ -230,15 +284,23 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
230
284
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not create record");
|
|
231
285
|
case 11:
|
|
232
286
|
setRecords(function (records) {
|
|
233
|
-
return [].concat((0, _toConsumableArray2.default)(records), [data]);
|
|
287
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, data.type, [].concat((0, _toConsumableArray2.default)(records[data.type]), [data])));
|
|
234
288
|
});
|
|
235
289
|
setMeta(function (meta) {
|
|
236
|
-
return (0,
|
|
290
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, (0, _objectSpread18.default)((0, _objectSpread18.default)({}, meta[folderId]), {}, {
|
|
237
291
|
totalCount: ++meta[folderId].totalCount
|
|
238
292
|
})));
|
|
239
293
|
});
|
|
294
|
+
setTags(function (tags) {
|
|
295
|
+
if (!data.tags || data.tags.length === 0) {
|
|
296
|
+
return tags;
|
|
297
|
+
}
|
|
298
|
+
var tagsByType = tags[data.type]; // get existing tags
|
|
299
|
+
|
|
300
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, tags), {}, (0, _defineProperty2.default)({}, data.type, mergeAndSortTags(tagsByType, data.tags)));
|
|
301
|
+
});
|
|
240
302
|
return _context3.abrupt("return", data);
|
|
241
|
-
case
|
|
303
|
+
case 15:
|
|
242
304
|
case "end":
|
|
243
305
|
return _context3.stop();
|
|
244
306
|
}
|
|
@@ -247,7 +309,7 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
247
309
|
},
|
|
248
310
|
updateRecord: function updateRecord(record, contextFolderId) {
|
|
249
311
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
|
|
250
|
-
var id, location, data, title, content, _yield$apolloFetching4, response, _response$search$upda, result, error;
|
|
312
|
+
var id, location, data, title, content, type, _yield$apolloFetching4, response, _response$search$upda, result, error;
|
|
251
313
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
|
|
252
314
|
while (1) switch (_context4.prev = _context4.next) {
|
|
253
315
|
case 0:
|
|
@@ -257,7 +319,7 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
257
319
|
}
|
|
258
320
|
throw new Error("`folderId` is mandatory");
|
|
259
321
|
case 2:
|
|
260
|
-
id = record.id, location = record.location, data = record.data, title = record.title, content = record.content;
|
|
322
|
+
id = record.id, location = record.location, data = record.data, title = record.title, content = record.content, type = record.type;
|
|
261
323
|
_context4.next = 5;
|
|
262
324
|
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("UPDATE", setLoading), function () {
|
|
263
325
|
return client.mutate({
|
|
@@ -290,14 +352,22 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
290
352
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not update record");
|
|
291
353
|
case 12:
|
|
292
354
|
setRecords(function (records) {
|
|
293
|
-
return records.map(function (record) {
|
|
355
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, type, records[type].map(function (record) {
|
|
294
356
|
return record.id === id ? result : record;
|
|
295
357
|
}).filter(function (record) {
|
|
296
358
|
return record.location.folderId === contextFolderId;
|
|
297
|
-
});
|
|
359
|
+
})));
|
|
360
|
+
});
|
|
361
|
+
setTags(function (tags) {
|
|
362
|
+
if (!data.tags || data.tags.length === 0) {
|
|
363
|
+
return tags;
|
|
364
|
+
}
|
|
365
|
+
var tagsByType = tags[data.type]; // get existing tags
|
|
366
|
+
|
|
367
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, tags), {}, (0, _defineProperty2.default)({}, data.type, mergeAndSortTags(tagsByType, data.tags)));
|
|
298
368
|
});
|
|
299
369
|
return _context4.abrupt("return", result);
|
|
300
|
-
case
|
|
370
|
+
case 15:
|
|
301
371
|
case "end":
|
|
302
372
|
return _context4.stop();
|
|
303
373
|
}
|
|
@@ -306,11 +376,11 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
306
376
|
},
|
|
307
377
|
deleteRecord: function deleteRecord(record) {
|
|
308
378
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
|
|
309
|
-
var id, location, folderId, _yield$apolloFetching5, response, _response$search$dele, data, error;
|
|
379
|
+
var id, location, type, folderId, _yield$apolloFetching5, response, _response$search$dele, data, error;
|
|
310
380
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
|
|
311
381
|
while (1) switch (_context5.prev = _context5.next) {
|
|
312
382
|
case 0:
|
|
313
|
-
id = record.id, location = record.location;
|
|
383
|
+
id = record.id, location = record.location, type = record.type;
|
|
314
384
|
folderId = location.folderId;
|
|
315
385
|
_context5.next = 4;
|
|
316
386
|
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("DELETE", setLoading), function () {
|
|
@@ -338,12 +408,12 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
338
408
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not delete record");
|
|
339
409
|
case 11:
|
|
340
410
|
setRecords(function (records) {
|
|
341
|
-
return records.filter(function (record) {
|
|
411
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, records), {}, (0, _defineProperty2.default)({}, type, records[type].filter(function (record) {
|
|
342
412
|
return record.id !== id;
|
|
343
|
-
});
|
|
413
|
+
})));
|
|
344
414
|
});
|
|
345
415
|
setMeta(function (meta) {
|
|
346
|
-
return (0,
|
|
416
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, (0, _objectSpread18.default)((0, _objectSpread18.default)({}, meta[folderId]), {}, {
|
|
347
417
|
totalCount: --meta[folderId].totalCount
|
|
348
418
|
})));
|
|
349
419
|
});
|
|
@@ -354,6 +424,49 @@ var SearchRecordsProvider = function SearchRecordsProvider(_ref) {
|
|
|
354
424
|
}
|
|
355
425
|
}, _callee5);
|
|
356
426
|
}))();
|
|
427
|
+
},
|
|
428
|
+
listTags: function listTags(params) {
|
|
429
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee6() {
|
|
430
|
+
var type, _yield$apolloFetching6, response, _response$search$list2, data, error;
|
|
431
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee6$(_context6) {
|
|
432
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
433
|
+
case 0:
|
|
434
|
+
type = params.type;
|
|
435
|
+
if (type) {
|
|
436
|
+
_context6.next = 3;
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
throw new Error("`type` is mandatory");
|
|
440
|
+
case 3:
|
|
441
|
+
_context6.next = 5;
|
|
442
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("LIST", setLoading), function () {
|
|
443
|
+
return client.query({
|
|
444
|
+
query: _records.LIST_TAGS,
|
|
445
|
+
variables: {
|
|
446
|
+
where: params
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
});
|
|
450
|
+
case 5:
|
|
451
|
+
_yield$apolloFetching6 = _context6.sent;
|
|
452
|
+
response = _yield$apolloFetching6.data;
|
|
453
|
+
_response$search$list2 = response.search.listTags, data = _response$search$list2.data, error = _response$search$list2.error;
|
|
454
|
+
if (data) {
|
|
455
|
+
_context6.next = 10;
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch tags");
|
|
459
|
+
case 10:
|
|
460
|
+
setTags(function (tags) {
|
|
461
|
+
return (0, _objectSpread18.default)((0, _objectSpread18.default)({}, tags), {}, (0, _defineProperty2.default)({}, type, data));
|
|
462
|
+
});
|
|
463
|
+
return _context6.abrupt("return", data);
|
|
464
|
+
case 12:
|
|
465
|
+
case "end":
|
|
466
|
+
return _context6.stop();
|
|
467
|
+
}
|
|
468
|
+
}, _callee6);
|
|
469
|
+
}))();
|
|
357
470
|
}
|
|
358
471
|
};
|
|
359
472
|
return /*#__PURE__*/_react.default.createElement(SearchRecordsContext.Provider, {
|
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","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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"}
|
|
1
|
+
{"version":3,"names":["SearchRecordsContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","mergeAndSortTags","oldTagItems","newTags","length","newTagItems","map","tag","mergedTagItems","unionBy","sortBy","SearchRecordsProvider","children","client","useApolloClient","useState","Object","create","records","setRecords","tags","setTags","loading","setLoading","meta","setMeta","context","listRecords","params","type","folderId","after","limit","sorting","sort","search","createdBy","tags_in","tags_startsWith","tags_not_startsWith","AND","OR","Error","recordsCount","filter","record","location","totalCount","action","validateOrGetDefaultDbSort","apolloFetchingHandler","loadingHandler","query","LIST_RECORDS","variables","where","fetchPolicy","response","data","responseMeta","error","message","sortTableItems","prev","getRecord","id","GET_RECORD","code","currentRecord","keys","reduce","accumulator","current","find","prevRecords","prevRecordsByType","recordIndex","findIndex","result","slice","tagsByType","createRecord","mutate","mutation","CREATE_RECORD","updateRecord","contextFolderId","title","content","UPDATE_RECORD","deleteRecord","DELETE_RECORD","listTags","LIST_TAGS"],"sources":["records.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport sortBy from \"lodash/sortBy\";\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 LIST_TAGS,\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 ListTagsResponse,\n ListTagsQueryVariables,\n TagItem,\n ListSearchRecordsWhereQueryVariables,\n ListTagsWhereQueryVariables\n} from \"~/types\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\n\ninterface SearchRecordsContext {\n records: Record<string, SearchRecordItem[]>;\n tags: Record<string, TagItem[]>;\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 search?: string;\n createdBy?: string;\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n AND?: ListSearchRecordsWhereQueryVariables[];\n OR?: ListSearchRecordsWhereQueryVariables[];\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 listTags: (\n params: ListTagsWhereQueryVariables & {\n type: string;\n AND?: [ListTagsWhereQueryVariables];\n OR?: [ListTagsWhereQueryVariables];\n }\n ) => Promise<TagItem[]>;\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\nconst mergeAndSortTags = (oldTagItems: TagItem[], newTags: string[]): TagItem[] => {\n if (!newTags.length) {\n return oldTagItems;\n }\n\n const newTagItems = newTags.map((tag: string) => ({ tag })); // create TagItem[] from array of strings\n const mergedTagItems = unionBy(oldTagItems, newTagItems, \"tag\"); // merge the two arrays\n\n return sortBy(mergedTagItems, [\"tag\"]);\n};\n\nexport const SearchRecordsProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [records, setRecords] = useState<Record<string, SearchRecordItem[]>>(Object.create(null));\n const [tags, setTags] = useState<Record<string, TagItem[]>>(Object.create(null));\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 tags,\n loading,\n meta,\n async listRecords(params) {\n const {\n type,\n folderId,\n after,\n limit,\n sort: sorting,\n search,\n createdBy,\n tags_in,\n tags_startsWith,\n tags_not_startsWith,\n AND,\n OR\n } = 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 (!type) {\n throw new Error(\"`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 =\n records[type] &&\n records[type].filter(record => record.location.folderId === folderId).length;\n const totalCount = meta[folderId || \"search\"]?.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(records => ({\n ...records,\n [type]: []\n }));\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: {\n where: {\n type,\n ...(folderId && { location: { folderId } }),\n tags_in,\n tags_startsWith,\n tags_not_startsWith,\n createdBy,\n AND,\n OR\n },\n search,\n limit,\n after,\n sort\n },\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 setRecords(records => {\n // In case of paginated request, we merge the fetched records with the existing ones, after sorting them.\n if (after) {\n return {\n ...records,\n [type]: sortTableItems(unionBy(data, records[type], \"id\"), sort)\n };\n }\n\n // Otherwise, we return the fetched records after sorting them.\n return {\n ...records,\n [type]: sortTableItems(data, sort)\n };\n });\n\n setMeta(meta => ({\n ...meta,\n [folderId || \"search\"]: 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 => {\n const currentRecord = Object.keys(records)\n .reduce((accumulator, current) => {\n return [...accumulator, ...records[current]];\n }, [] as SearchRecordItem[])\n .find(record => record.id === id);\n\n if (!currentRecord) {\n return records;\n }\n\n return {\n ...records,\n [currentRecord.type]: records[currentRecord.type].filter(\n record => record.id !== id\n )\n };\n });\n } else {\n setRecords(prevRecords => {\n const prevRecordsByType = prevRecords[data.type];\n\n const recordIndex = prevRecordsByType.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.type]: [data, ...prevRecordsByType] };\n }\n\n // Updating record found in the list\n const result = {\n ...prevRecords,\n [data.type]: [\n ...prevRecordsByType.slice(0, recordIndex),\n {\n ...prevRecordsByType[recordIndex],\n ...data\n },\n ...prevRecordsByType.slice(recordIndex + 1)\n ]\n };\n\n return result;\n });\n\n setTags(tags => {\n if (!data.tags || data.tags.length === 0) {\n return tags;\n }\n\n const tagsByType = tags[data.type]; // get existing tags\n\n return {\n ...tags,\n [data.type]: mergeAndSortTags(tagsByType, data.tags)\n };\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 => ({\n ...records,\n [data.type]: [...records[data.type], data]\n }));\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: ++meta[folderId].totalCount\n }\n }));\n\n setTags(tags => {\n if (!data.tags || data.tags.length === 0) {\n return tags;\n }\n\n const tagsByType = tags[data.type]; // get existing tags\n\n return {\n ...tags,\n [data.type]: mergeAndSortTags(tagsByType, data.tags)\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, type } = 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 [type]: records[type]\n .map(record => (record.id === id ? result : record))\n .filter(record => record.location.folderId === contextFolderId)\n }));\n\n setTags(tags => {\n if (!data.tags || data.tags.length === 0) {\n return tags;\n }\n\n const tagsByType = tags[data.type]; // get existing tags\n\n return {\n ...tags,\n [data.type]: mergeAndSortTags(tagsByType, data.tags)\n };\n });\n\n return result;\n },\n\n async deleteRecord(record) {\n const { id, location, type } = 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 => ({\n ...records,\n [type]: records[type].filter(record => record.id !== id)\n }));\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 async listTags(params) {\n const { type } = params;\n\n if (!type) {\n throw new Error(\"`type` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"LIST\", setLoading),\n () =>\n client.query<ListTagsResponse, ListTagsQueryVariables>({\n query: LIST_TAGS,\n variables: {\n where: params\n }\n })\n );\n\n const { data, error } = response.search.listTags;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch tags\");\n }\n\n setTags(tags => ({\n ...tags,\n [type]: data\n }));\n\n return data;\n }\n };\n\n return (\n <SearchRecordsContext.Provider value={context}>{children}</SearchRecordsContext.Provider>\n );\n};\n"],"mappings":"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"}
|
package/graphql/records.gql.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export declare const LIST_RECORDS: import("graphql").DocumentNode;
|
|
|
3
3
|
export declare const GET_RECORD: import("graphql").DocumentNode;
|
|
4
4
|
export declare const UPDATE_RECORD: import("graphql").DocumentNode;
|
|
5
5
|
export declare const DELETE_RECORD: import("graphql").DocumentNode;
|
|
6
|
+
export declare const LIST_TAGS: import("graphql").DocumentNode;
|
package/graphql/records.gql.js
CHANGED
|
@@ -4,20 +4,22 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.UPDATE_RECORD = exports.LIST_RECORDS = exports.GET_RECORD = exports.DELETE_RECORD = exports.CREATE_RECORD = void 0;
|
|
7
|
+
exports.UPDATE_RECORD = exports.LIST_TAGS = exports.LIST_RECORDS = exports.GET_RECORD = exports.DELETE_RECORD = exports.CREATE_RECORD = void 0;
|
|
8
8
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
9
|
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
10
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
10
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
11
11
|
var ERROR_FIELD = /* GraphQL */"\n {\n code\n data\n message\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";
|
|
12
|
+
var DATA_FIELD = /* GraphQL */"\n {\n id\n type\n location {\n folderId\n }\n title\n content\n data\n tags\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 ($
|
|
16
|
+
var LIST_RECORDS = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query ListRecords ($where: SearchRecordListWhereInput, $limit: Int, $after: String, $sort: AcoSort!, $search: String) {\n search {\n listRecords(where: $where, limit: $limit, after: $after, sort: $sort, search: $search) {\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;
|
|
20
20
|
var UPDATE_RECORD = (0, _graphqlTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n mutation UpdateRecord($id: ID!, $data: SearchRecordUpdateInput!) {\n search {\n updateRecord(id: $id, data: $data) {\n data ", "\n error ", "\n }\n }\n }\n"])), DATA_FIELD, ERROR_FIELD);
|
|
21
21
|
exports.UPDATE_RECORD = UPDATE_RECORD;
|
|
22
22
|
var DELETE_RECORD = (0, _graphqlTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n mutation DeleteRecord($id: ID!) {\n search {\n deleteRecord(id: $id) {\n data\n error ", "\n }\n }\n }\n"])), ERROR_FIELD);
|
|
23
|
-
exports.DELETE_RECORD = DELETE_RECORD;
|
|
23
|
+
exports.DELETE_RECORD = DELETE_RECORD;
|
|
24
|
+
var LIST_TAGS = (0, _graphqlTag.default)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n query ListTags($where: SearchRecordTagListWhereInput) {\n search {\n listTags(where: $where) {\n data {\n tag\n }\n meta ", "\n error ", "\n }\n }\n }\n"])), LIST_META_FIELD, ERROR_FIELD);
|
|
25
|
+
exports.LIST_TAGS = LIST_TAGS;
|
|
@@ -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 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 ($
|
|
1
|
+
{"version":3,"names":["ERROR_FIELD","DATA_FIELD","LIST_META_FIELD","CREATE_RECORD","gql","LIST_RECORDS","GET_RECORD","UPDATE_RECORD","DELETE_RECORD","LIST_TAGS"],"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 tags\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 ($where: SearchRecordListWhereInput, $limit: Int, $after: String, $sort: AcoSort!, $search: String) {\n search {\n listRecords(where: $where, limit: $limit, after: $after, sort: $sort, search: $search) {\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\nexport const LIST_TAGS = gql`\n query ListTags($where: SearchRecordTagListWhereInput) {\n search {\n listTags(where: $where) {\n data {\n tag\n }\n meta ${LIST_META_FIELD}\n error ${ERROR_FIELD}\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;AAAA;AAA8B;AAE9B,IAAMA,WAAW,GAAG,4EAMnB;AAED,IAAMC,UAAU,GAAG,2LAalB;AAED,IAAMC,eAAe,GAAG,yFAMvB;AAEM,IAAMC,aAAa,OAAGC,mBAAG,wSAITH,UAAU,EACTD,WAAW,CAIlC;AAAC;AAEK,IAAMK,YAAY,OAAGD,mBAAG,icAIRH,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;AAEK,IAAMS,SAAS,OAAGL,mBAAG,2WAOLF,eAAe,EACdF,WAAW,CAIlC;AAAC"}
|
package/hooks/index.d.ts
CHANGED
package/hooks/index.js
CHANGED
|
@@ -35,4 +35,15 @@ Object.keys(_useRecords).forEach(function (key) {
|
|
|
35
35
|
return _useRecords[key];
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
+
});
|
|
39
|
+
var _useTags = require("./useTags");
|
|
40
|
+
Object.keys(_useTags).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _useTags[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function get() {
|
|
46
|
+
return _useTags[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
38
49
|
});
|
package/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"}
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./useAcoList\";\nexport * from \"./useFolders\";\nexport * from \"./useRecords\";\nexport * from \"./useTags\";\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;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/hooks/useAcoList.d.ts
CHANGED
|
@@ -1,18 +1,33 @@
|
|
|
1
|
-
import { FolderItem, ListDbSort, SearchRecordItem } from "../types";
|
|
2
|
-
|
|
1
|
+
import { FolderItem, ListDbSort, ListSearchRecordsWhereQueryVariables, SearchRecordItem } from "../types";
|
|
2
|
+
interface UseAcoListParams {
|
|
3
|
+
type: string;
|
|
4
|
+
folderId?: string;
|
|
5
|
+
tags_in?: string[];
|
|
6
|
+
tags_startsWith?: string;
|
|
7
|
+
tags_not_startsWith?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const useAcoList: (params: UseAcoListParams) => {
|
|
3
10
|
folders: FolderItem[];
|
|
4
11
|
records: SearchRecordItem<import("../types").GenericSearchData>[];
|
|
5
12
|
listTitle: string | undefined;
|
|
6
|
-
isListLoading: boolean
|
|
7
|
-
isListLoadingMore: boolean
|
|
13
|
+
isListLoading: boolean;
|
|
14
|
+
isListLoadingMore: boolean;
|
|
8
15
|
meta: {
|
|
9
16
|
cursor: string | null;
|
|
10
17
|
totalCount: number;
|
|
11
18
|
hasMoreItems: boolean;
|
|
12
19
|
};
|
|
13
20
|
listItems(params: {
|
|
21
|
+
folderId?: string | undefined;
|
|
14
22
|
after?: string | undefined;
|
|
15
23
|
limit?: number | undefined;
|
|
16
24
|
sort?: ListDbSort | undefined;
|
|
25
|
+
search?: string | undefined;
|
|
26
|
+
tags_in?: string[] | undefined;
|
|
27
|
+
tags_startsWith?: string | undefined;
|
|
28
|
+
tags_not_startsWith?: string | undefined;
|
|
29
|
+
AND?: ListSearchRecordsWhereQueryVariables[] | undefined;
|
|
30
|
+
OR?: ListSearchRecordsWhereQueryVariables[] | undefined;
|
|
17
31
|
}): Promise<SearchRecordItem<import("../types").GenericSearchData>[]>;
|
|
18
32
|
};
|
|
33
|
+
export {};
|