@webiny/app-record-locking 5.43.0-beta.0 → 5.43.0-beta.2
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/HeadlessCmsContentEntry/ContentEntryLocker.js +39 -25
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.js.map +1 -1
- package/components/RecordLockingProvider.js +9 -4
- package/components/RecordLockingProvider.js.map +1 -1
- package/domain/RecordLocking.d.ts +9 -13
- package/domain/RecordLocking.js +2 -21
- package/domain/RecordLocking.js.map +1 -1
- package/domain/abstractions/IRecordLocking.d.ts +7 -1
- package/domain/abstractions/IRecordLocking.js.map +1 -1
- package/package.json +17 -18
- package/types.d.ts +2 -1
- package/types.js.map +1 -1
- package/domain/RecordLockingUnlockEntryRequest.d.ts +0 -11
- package/domain/RecordLockingUnlockEntryRequest.js +0 -28
- package/domain/RecordLockingUnlockEntryRequest.js.map +0 -1
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.d.ts +0 -12
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.js +0 -7
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.js.map +0 -1
- package/domain/graphql/unlockEntryRequest.d.ts +0 -12
- package/domain/graphql/unlockEntryRequest.js +0 -16
- package/domain/graphql/unlockEntryRequest.js.map +0 -1
|
@@ -13,6 +13,7 @@ var _appWebsockets = require("@webiny/app-websockets");
|
|
|
13
13
|
var _utils = require("@webiny/utils");
|
|
14
14
|
var _appAdmin = require("@webiny/app-admin");
|
|
15
15
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
16
|
+
var autoUpdateTimeout = 20;
|
|
16
17
|
var Bold = /*#__PURE__*/(0, _base.default)("span", process.env.NODE_ENV === "production" ? {
|
|
17
18
|
target: "e11fa9fc0"
|
|
18
19
|
} : {
|
|
@@ -24,7 +25,7 @@ var Bold = /*#__PURE__*/(0, _base.default)("span", process.env.NODE_ENV === "pro
|
|
|
24
25
|
} : {
|
|
25
26
|
name: "16ceglb",
|
|
26
27
|
styles: "font-weight:600",
|
|
27
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
28
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUxvY2tlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWXdCIiwiZmlsZSI6IkNvbnRlbnRFbnRyeUxvY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVJlY29yZExvY2tpbmcgfSBmcm9tIFwifi9ob29rc1wiO1xuaW1wb3J0IHR5cGUgeyBJUmVjb3JkTG9ja2luZ0lkZW50aXR5LCBJUmVjb3JkTG9ja2luZ0xvY2tSZWNvcmQgfSBmcm9tIFwifi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmNvbWluZ0dlbmVyaWNEYXRhIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLXdlYnNvY2tldHNcIjtcbmltcG9ydCB7IHVzZVdlYnNvY2tldHMgfSBmcm9tIFwiQHdlYmlueS9hcHAtd2Vic29ja2V0c1wiO1xuaW1wb3J0IHsgcGFyc2VJZGVudGlmaWVyIH0gZnJvbSBcIkB3ZWJpbnkvdXRpbHNcIjtcbmltcG9ydCB7IHVzZURpYWxvZ3MgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgQ21zQ29udGVudEVudHJ5LCBDbXNNb2RlbCB9IGZyb20gXCJAd2ViaW55L2FwcC1oZWFkbGVzcy1jbXMvdHlwZXNcIjtcblxuY29uc3QgYXV0b1VwZGF0ZVRpbWVvdXQgPSAyMDtcblxuY29uc3QgQm9sZCA9IHN0eWxlZC5zcGFuYFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb250ZW50RW50cnlMb2NrZXJQcm9wcyB7XG4gICAgZW50cnk6IENtc0NvbnRlbnRFbnRyeTtcbiAgICBtb2RlbDogQ21zTW9kZWw7XG4gICAgb25FbnRyeVVubG9ja2VkOiAoKSA9PiB2b2lkO1xuICAgIG9uRGlzYWJsZVByb21wdDogKGZsYWc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0RWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJS2lja091dFdlYnNvY2tldHNNZXNzYWdlIGV4dGVuZHMgSW5jb21pbmdHZW5lcmljRGF0YSB7XG4gICAgZGF0YToge1xuICAgICAgICByZWNvcmQ6IElSZWNvcmRMb2NraW5nTG9ja1JlY29yZDtcbiAgICAgICAgdXNlcjogSVJlY29yZExvY2tpbmdJZGVudGl0eTtcbiAgICB9O1xufVxuaW50ZXJmYWNlIElGb3JjZVVubG9ja2VkUHJvcHMge1xuICAgIHVzZXI6IElSZWNvcmRMb2NraW5nSWRlbnRpdHk7XG59XG5jb25zdCBGb3JjZVVubG9ja2VkID0gKHsgdXNlciB9OiBJRm9yY2VVbmxvY2tlZFByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIFRoZSBlbnRyeSB5b3Ugd2VyZSBlZGl0aW5nIHdhcyBmb3JjZWZ1bGx5IHVubG9ja2VkIGJ5e1wiIFwifVxuICAgICAgICAgICAgPEJvbGQ+e3VzZXIuZGlzcGxheU5hbWUgfHwgXCJVbmtub3duIHVzZXJcIn08L0JvbGQ+LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHlvdSBsb3N0XG4gICAgICAgICAgICB0aGUgdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IENvbnRlbnRFbnRyeUxvY2tlciA9ICh7XG4gICAgb25FbnRyeVVubG9ja2VkLFxuICAgIG9uRGlzYWJsZVByb21wdCxcbiAgICBlbnRyeSxcbiAgICBtb2RlbCxcbiAgICBjaGlsZHJlblxufTogSUNvbnRlbnRFbnRyeUxvY2tlclByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB1cGRhdGVFbnRyeUxvY2ssIHJlbW92ZUVudHJ5TG9jayB9ID0gdXNlUmVjb3JkTG9ja2luZygpO1xuICAgIGNvbnN0IHdlYnNvY2tldHMgPSB1c2VXZWJzb2NrZXRzKCk7XG4gICAgY29uc3QgeyBzaG93RGlhbG9nIH0gPSB1c2VEaWFsb2dzKCk7XG5cbiAgICBjb25zdCBlbnRyeUxvY2tlclRpbWVvdXQgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWVudHJ5LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBpZDogZW50cnlJZCB9ID0gcGFyc2VJZGVudGlmaWVyKGVudHJ5LmlkKTtcblxuICAgICAgICBsZXQgb25NZXNzYWdlU3ViID0gd2Vic29ja2V0cy5vbk1lc3NhZ2U8SUtpY2tPdXRXZWJzb2NrZXRzTWVzc2FnZT4oXG4gICAgICAgICAgICBgcmVjb3JkTG9ja2luZy5lbnRyeS5raWNrT3V0LiR7ZW50cnlJZH1gLFxuICAgICAgICAgICAgYXN5bmMgaW5jb21pbmcgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gaW5jb21pbmcuZGF0YTtcbiAgICAgICAgICAgICAgICBvbkRpc2FibGVQcm9tcHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRW50cnlMb2NrKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGVudHJ5SWQsXG4gICAgICAgICAgICAgICAgICAgICRsb2NraW5nVHlwZTogbW9kZWwubW9kZWxJZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNob3dEaWFsb2coe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJFbnRyeSB3YXMgZm9yY2VmdWxseSB1bmxvY2tlZCFcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcmNlVW5sb2NrZWQgdXNlcj17dXNlcn0gLz4sXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiBcIk9rXCIsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsTGFiZWw6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uRW50cnlVbmxvY2tlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBvbk1lc3NhZ2VTdWIub2ZmKCk7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExldHMgbnVsbCBzdWJzY3JpcHRpb25zLCBqdXN0IGluIGNhc2UgaXQuLi5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgb25NZXNzYWdlU3ViID0gbnVsbDtcbiAgICAgICAgfTtcbiAgICB9LCBbZW50cnkuaWQsIG9uRW50cnlVbmxvY2tlZCwgbW9kZWwubW9kZWxJZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFlbnRyeS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5TG9ja2VyVGltZW91dC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVMb2NrID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXBkYXRlRW50cnlMb2NrKHtcbiAgICAgICAgICAgICAgICBpZDogZW50cnkuaWQsXG4gICAgICAgICAgICAgICAgJGxvY2tpbmdUeXBlOiBtb2RlbC5tb2RlbElkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzaG93RGlhbG9nKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHVwZGF0aW5nIHRoZSBlbnRyeSBsb2NrLlwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiByZXN1bHQuZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IFwiT2tcIixcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxMYWJlbDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb25FbnRyeVVubG9ja2VkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3JlYXRlVGltZW91dCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZVRpbWVvdXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBlbnRyeUxvY2tlclRpbWVvdXQuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVMb2NrKCk7XG4gICAgICAgICAgICB9LCBhdXRvVXBkYXRlVGltZW91dCAqIDEwMDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZUxvY2soKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICghZW50cnlMb2NrZXJUaW1lb3V0LmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZW50cnlMb2NrZXJUaW1lb3V0LmN1cnJlbnQpO1xuICAgICAgICAgICAgZW50cnlMb2NrZXJUaW1lb3V0LmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9O1xuICAgIH0sIFtlbnRyeS5pZCwgb25FbnRyeVVubG9ja2VkXSk7XG5cbiAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcbiJdfQ== */",
|
|
28
29
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
29
30
|
});
|
|
30
31
|
var ForceUnlocked = function ForceUnlocked(_ref) {
|
|
@@ -39,30 +40,24 @@ var ContentEntryLocker = exports.ContentEntryLocker = function ContentEntryLocke
|
|
|
39
40
|
children = _ref2.children;
|
|
40
41
|
var _useRecordLocking = (0, _hooks.useRecordLocking)(),
|
|
41
42
|
updateEntryLock = _useRecordLocking.updateEntryLock,
|
|
42
|
-
unlockEntry = _useRecordLocking.unlockEntry,
|
|
43
|
-
fetchLockedEntryLockRecord = _useRecordLocking.fetchLockedEntryLockRecord,
|
|
44
43
|
removeEntryLock = _useRecordLocking.removeEntryLock;
|
|
45
44
|
var websockets = (0, _appWebsockets.useWebsockets)();
|
|
46
45
|
var _useDialogs = (0, _appAdmin.useDialogs)(),
|
|
47
46
|
showDialog = _useDialogs.showDialog;
|
|
47
|
+
var entryLockerTimeout = (0, _react.useRef)(null);
|
|
48
48
|
(0, _react.useEffect)(function () {
|
|
49
49
|
if (!entry.id) {
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
var _parseIdentifier = (0, _utils.parseIdentifier)(entry.id),
|
|
53
53
|
entryId = _parseIdentifier.id;
|
|
54
|
-
var removeEntryLockCb = async function removeEntryLockCb() {
|
|
55
|
-
var record = {
|
|
56
|
-
id: entryId,
|
|
57
|
-
$lockingType: model.modelId
|
|
58
|
-
};
|
|
59
|
-
removeEntryLock(record);
|
|
60
|
-
await unlockEntry(record);
|
|
61
|
-
};
|
|
62
54
|
var onMessageSub = websockets.onMessage("recordLocking.entry.kickOut.".concat(entryId), async function (incoming) {
|
|
63
55
|
var user = incoming.data.user;
|
|
64
56
|
onDisablePrompt(true);
|
|
65
|
-
|
|
57
|
+
removeEntryLock({
|
|
58
|
+
id: entryId,
|
|
59
|
+
$lockingType: model.modelId
|
|
60
|
+
});
|
|
66
61
|
showDialog({
|
|
67
62
|
title: "Entry was forcefully unlocked!",
|
|
68
63
|
content: /*#__PURE__*/_react.default.createElement(ForceUnlocked, {
|
|
@@ -87,22 +82,41 @@ var ContentEntryLocker = exports.ContentEntryLocker = function ContentEntryLocke
|
|
|
87
82
|
if (!entry.id) {
|
|
88
83
|
return;
|
|
89
84
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
85
|
+
if (entryLockerTimeout.current) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
var updateLock = async function updateLock() {
|
|
89
|
+
var result = await updateEntryLock({
|
|
90
|
+
id: entry.id,
|
|
91
|
+
$lockingType: model.modelId
|
|
92
|
+
});
|
|
93
|
+
if (result.error) {
|
|
94
|
+
showDialog({
|
|
95
|
+
title: "There was an error while updating the entry lock.",
|
|
96
|
+
content: result.error.message,
|
|
97
|
+
acceptLabel: "Ok",
|
|
98
|
+
onClose: undefined,
|
|
99
|
+
cancelLabel: undefined
|
|
100
|
+
});
|
|
101
|
+
onEntryUnlocked();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
createTimeout();
|
|
105
|
+
};
|
|
106
|
+
var createTimeout = function createTimeout() {
|
|
107
|
+
entryLockerTimeout.current = window.setTimeout(function () {
|
|
108
|
+
updateLock();
|
|
109
|
+
}, autoUpdateTimeout * 1000);
|
|
93
110
|
};
|
|
94
|
-
|
|
111
|
+
updateLock();
|
|
95
112
|
return function () {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
removeEntryLock(record);
|
|
102
|
-
await unlockEntry(record);
|
|
103
|
-
})();
|
|
113
|
+
if (!entryLockerTimeout.current) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
clearTimeout(entryLockerTimeout.current);
|
|
117
|
+
entryLockerTimeout.current = null;
|
|
104
118
|
};
|
|
105
|
-
}, [entry.id]);
|
|
119
|
+
}, [entry.id, onEntryUnlocked]);
|
|
106
120
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
|
|
107
121
|
};
|
|
108
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_hooks","_appWebsockets","_utils","_appAdmin","_EMOTION_STRINGIFIED_CSS_ERROR__","Bold","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ForceUnlocked","_ref","user","createElement","Fragment","displayName","ContentEntryLocker","exports","_ref2","onEntryUnlocked","onDisablePrompt","entry","model","children","_useRecordLocking","useRecordLocking","updateEntryLock","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_hooks","_appWebsockets","_utils","_appAdmin","_EMOTION_STRINGIFIED_CSS_ERROR__","autoUpdateTimeout","Bold","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ForceUnlocked","_ref","user","createElement","Fragment","displayName","ContentEntryLocker","exports","_ref2","onEntryUnlocked","onDisablePrompt","entry","model","children","_useRecordLocking","useRecordLocking","updateEntryLock","removeEntryLock","websockets","useWebsockets","_useDialogs","useDialogs","showDialog","entryLockerTimeout","useRef","useEffect","id","_parseIdentifier","parseIdentifier","entryId","onMessageSub","onMessage","concat","incoming","data","$lockingType","modelId","title","content","acceptLabel","onClose","undefined","cancelLabel","off","current","updateLock","result","error","message","createTimeout","window","setTimeout","clearTimeout"],"sources":["ContentEntryLocker.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { useRecordLocking } from \"~/hooks\";\nimport type { IRecordLockingIdentity, IRecordLockingLockRecord } from \"~/types\";\nimport type { IncomingGenericData } from \"@webiny/app-websockets\";\nimport { useWebsockets } from \"@webiny/app-websockets\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport styled from \"@emotion/styled\";\nimport { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms/types\";\n\nconst autoUpdateTimeout = 20;\n\nconst Bold = styled.span`\n font-weight: 600;\n`;\n\nexport interface IContentEntryLockerProps {\n entry: CmsContentEntry;\n model: CmsModel;\n onEntryUnlocked: () => void;\n onDisablePrompt: (flag: boolean) => void;\n children: React.ReactElement;\n}\n\nexport interface IKickOutWebsocketsMessage extends IncomingGenericData {\n data: {\n record: IRecordLockingLockRecord;\n user: IRecordLockingIdentity;\n };\n}\ninterface IForceUnlockedProps {\n user: IRecordLockingIdentity;\n}\nconst ForceUnlocked = ({ user }: IForceUnlockedProps) => {\n return (\n <>\n The entry you were editing was forcefully unlocked by{\" \"}\n <Bold>{user.displayName || \"Unknown user\"}</Bold>. Unfortunately, this means you lost\n the unsaved changes.\n </>\n );\n};\n\nexport const ContentEntryLocker = ({\n onEntryUnlocked,\n onDisablePrompt,\n entry,\n model,\n children\n}: IContentEntryLockerProps) => {\n const { updateEntryLock, removeEntryLock } = useRecordLocking();\n const websockets = useWebsockets();\n const { showDialog } = useDialogs();\n\n const entryLockerTimeout = useRef<number | null>(null);\n\n useEffect(() => {\n if (!entry.id) {\n return;\n }\n const { id: entryId } = parseIdentifier(entry.id);\n\n let onMessageSub = websockets.onMessage<IKickOutWebsocketsMessage>(\n `recordLocking.entry.kickOut.${entryId}`,\n async incoming => {\n const { user } = incoming.data;\n onDisablePrompt(true);\n removeEntryLock({\n id: entryId,\n $lockingType: model.modelId\n });\n showDialog({\n title: \"Entry was forcefully unlocked!\",\n content: <ForceUnlocked user={user} />,\n acceptLabel: \"Ok\",\n onClose: undefined,\n cancelLabel: undefined\n });\n onEntryUnlocked();\n }\n );\n\n return () => {\n onMessageSub.off();\n /**\n * Lets null subscriptions, just in case it...\n */\n // @ts-expect-error\n onMessageSub = null;\n };\n }, [entry.id, onEntryUnlocked, model.modelId]);\n\n useEffect(() => {\n if (!entry.id) {\n return;\n }\n\n if (entryLockerTimeout.current) {\n return;\n }\n\n const updateLock = async () => {\n const result = await updateEntryLock({\n id: entry.id,\n $lockingType: model.modelId\n });\n if (result.error) {\n showDialog({\n title: \"There was an error while updating the entry lock.\",\n content: result.error.message,\n acceptLabel: \"Ok\",\n onClose: undefined,\n cancelLabel: undefined\n });\n onEntryUnlocked();\n return;\n }\n createTimeout();\n };\n\n const createTimeout = () => {\n entryLockerTimeout.current = window.setTimeout(() => {\n updateLock();\n }, autoUpdateTimeout * 1000);\n };\n\n updateLock();\n return () => {\n if (!entryLockerTimeout.current) {\n return;\n }\n clearTimeout(entryLockerTimeout.current);\n entryLockerTimeout.current = null;\n };\n }, [entry.id, onEntryUnlocked]);\n\n return <>{children}</>;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,15 +55,19 @@ var RecordLockingProvider = exports.RecordLockingProvider = function RecordLocki
|
|
|
55
55
|
var result = await recordLocking.updateEntryLock(params);
|
|
56
56
|
if (result.error) {
|
|
57
57
|
setError(result.error);
|
|
58
|
-
return;
|
|
58
|
+
return result;
|
|
59
59
|
}
|
|
60
60
|
var target = result.data;
|
|
61
61
|
if (!target?.id) {
|
|
62
|
-
|
|
62
|
+
var _error = {
|
|
63
63
|
message: "No data returned from server.",
|
|
64
64
|
code: "NO_DATA"
|
|
65
|
-
}
|
|
66
|
-
|
|
65
|
+
};
|
|
66
|
+
setError(_error);
|
|
67
|
+
return {
|
|
68
|
+
error: _error,
|
|
69
|
+
data: null
|
|
70
|
+
};
|
|
67
71
|
}
|
|
68
72
|
_setRecords(function (prev) {
|
|
69
73
|
return prev.map(function (item) {
|
|
@@ -75,6 +79,7 @@ var RecordLockingProvider = exports.RecordLockingProvider = function RecordLocki
|
|
|
75
79
|
return item;
|
|
76
80
|
});
|
|
77
81
|
});
|
|
82
|
+
return result;
|
|
78
83
|
},
|
|
79
84
|
unlockEntry: async function unlockEntry(params) {
|
|
80
85
|
return await recordLocking.unlockEntry(params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_RecordLocking","_appAdmin","RecordLockingContext","exports","React","createContext","isSameArray","existingRecords","newRecords","length","every","record","some","newRecord","id","savedOn","RecordLockingProvider","props","client","useApolloClient","_useState","useState","_useState2","_slicedToArray2","default","loading","setLoading","recordLocking","useMemo","createRecordLocking","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","error","setError","_useStateIfMounted3","_useStateIfMounted4","records","setRecords","setRecordsIfNeeded","useCallback","sameArray","value","updateEntryLock","params","result","target","data","message","code","prev","map","item","entryId","_objectSpread2","$locked","unlockEntry","unlockEntryForce","isLockExpired","input","isRecordLocked","getLockRecordEntry","removeEntryLock","fetchLockRecord","ex","fetchLockedEntryLockRecord","folderId","type","createElement","Provider","Object","assign"],"sources":["RecordLockingProvider.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createRecordLocking } from \"~/domain/RecordLocking\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingContext,\n IRecordLockingError,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\n\nexport interface IRecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nexport const RecordLockingContext = React.createContext({} as unknown as IRecordLockingContext);\n\nconst isSameArray = (\n existingRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[],\n newRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[]\n): boolean => {\n if (existingRecords.length !== newRecords.length) {\n return false;\n }\n return existingRecords.every(record => {\n return newRecords.some(\n newRecord => newRecord.id === record.id && newRecord.savedOn === record.savedOn\n );\n });\n};\n\nexport const RecordLockingProvider = (props: IRecordLockingProviderProps) => {\n const client = useApolloClient();\n\n const [loading, setLoading] = useState(false);\n\n const recordLocking = useMemo(() => {\n return createRecordLocking({\n client,\n setLoading\n });\n }, []);\n\n const [error, setError] = useStateIfMounted<IRecordLockingError | null>(null);\n\n const [records, setRecords] = useStateIfMounted<IPossiblyRecordLockingRecord[]>([]);\n\n const setRecordsIfNeeded = useCallback(\n (newRecords: IPossiblyRecordLockingRecord[]) => {\n const sameArray = isSameArray(records, newRecords);\n if (sameArray) {\n return;\n }\n setRecords(newRecords);\n },\n [records]\n );\n\n const value: IRecordLockingContext = {\n async updateEntryLock(params: IUpdateEntryLockParams) {\n const result = await recordLocking.updateEntryLock(params);\n if (result.error) {\n setError(result.error);\n return;\n }\n const target = result.data;\n if (!target?.id) {\n
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_RecordLocking","_appAdmin","RecordLockingContext","exports","React","createContext","isSameArray","existingRecords","newRecords","length","every","record","some","newRecord","id","savedOn","RecordLockingProvider","props","client","useApolloClient","_useState","useState","_useState2","_slicedToArray2","default","loading","setLoading","recordLocking","useMemo","createRecordLocking","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","error","setError","_useStateIfMounted3","_useStateIfMounted4","records","setRecords","setRecordsIfNeeded","useCallback","sameArray","value","updateEntryLock","params","result","target","data","message","code","prev","map","item","entryId","_objectSpread2","$locked","unlockEntry","unlockEntryForce","isLockExpired","input","isRecordLocked","getLockRecordEntry","removeEntryLock","fetchLockRecord","ex","fetchLockedEntryLockRecord","folderId","type","createElement","Provider","Object","assign"],"sources":["RecordLockingProvider.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createRecordLocking } from \"~/domain/RecordLocking\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingContext,\n IRecordLockingError,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\n\nexport interface IRecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nexport const RecordLockingContext = React.createContext({} as unknown as IRecordLockingContext);\n\nconst isSameArray = (\n existingRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[],\n newRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[]\n): boolean => {\n if (existingRecords.length !== newRecords.length) {\n return false;\n }\n return existingRecords.every(record => {\n return newRecords.some(\n newRecord => newRecord.id === record.id && newRecord.savedOn === record.savedOn\n );\n });\n};\n\nexport const RecordLockingProvider = (props: IRecordLockingProviderProps) => {\n const client = useApolloClient();\n\n const [loading, setLoading] = useState(false);\n\n const recordLocking = useMemo(() => {\n return createRecordLocking({\n client,\n setLoading\n });\n }, []);\n\n const [error, setError] = useStateIfMounted<IRecordLockingError | null>(null);\n\n const [records, setRecords] = useStateIfMounted<IPossiblyRecordLockingRecord[]>([]);\n\n const setRecordsIfNeeded = useCallback(\n (newRecords: IPossiblyRecordLockingRecord[]) => {\n const sameArray = isSameArray(records, newRecords);\n if (sameArray) {\n return;\n }\n setRecords(newRecords);\n },\n [records]\n );\n\n const value: IRecordLockingContext = {\n async updateEntryLock(params: IUpdateEntryLockParams) {\n const result = await recordLocking.updateEntryLock(params);\n if (result.error) {\n setError(result.error);\n return result;\n }\n const target = result.data;\n if (!target?.id) {\n const error = {\n message: \"No data returned from server.\",\n code: \"NO_DATA\"\n };\n setError(error);\n return {\n error,\n data: null\n };\n }\n\n setRecords(prev => {\n return prev.map(item => {\n if (item.entryId === target.id) {\n return {\n ...item,\n $locked: result.data\n };\n }\n return item;\n });\n });\n return result;\n },\n async unlockEntry(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params);\n },\n async unlockEntryForce(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params, true);\n },\n isLockExpired(input: Date | string): boolean {\n return recordLocking.isLockExpired(input);\n },\n isRecordLocked(record) {\n if (!record) {\n return false;\n }\n return recordLocking.isRecordLocked(record);\n },\n getLockRecordEntry(id: string) {\n return recordLocking.getLockRecordEntry(id);\n },\n removeEntryLock(params: IUnlockEntryParams) {\n return recordLocking.removeEntryLock(params);\n },\n async fetchLockRecord(params: IFetchLockRecordParams) {\n try {\n return await recordLocking.fetchLockRecord(params);\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n },\n async fetchLockedEntryLockRecord(params: IFetchLockedEntryLockRecordParams) {\n return recordLocking.fetchLockedEntryLockRecord(params);\n },\n async setRecords(folderId, type, newRecords) {\n setRecordsIfNeeded(newRecords);\n\n const result = await recordLocking.setRecords(folderId, type, newRecords);\n if (!result) {\n return;\n }\n setRecords(result);\n },\n error,\n records,\n loading\n };\n\n return <RecordLockingContext.Provider {...props} value={value} />;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import { IRecordLocking } from "./abstractions/IRecordLocking";
|
|
1
|
+
import type { IRecordLocking } from "./abstractions/IRecordLocking";
|
|
2
2
|
import { ApolloClient } from "apollo-client";
|
|
3
|
-
import { IRecordLockingGetLockRecord } from "./abstractions/IRecordLockingGetLockRecord";
|
|
4
|
-
import { IRecordLockingIsEntryLocked } from "./abstractions/IRecordLockingIsEntryLocked";
|
|
5
|
-
import { IRecordLockingListLockRecords } from "./abstractions/IRecordLockingListLockRecords";
|
|
6
|
-
import { IRecordLockingLockEntry } from "./abstractions/IRecordLockingLockEntry";
|
|
7
|
-
import { IRecordLockingUnlockEntry } from "./abstractions/IRecordLockingUnlockEntry";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { IRecordLockingUpdateEntryLock } from "./abstractions/IRecordLockingUpdateEntryLock";
|
|
12
|
-
import { IRecordLockingGetLockedEntryLockRecord } from "./abstractions/IRecordLockingGetLockedEntryLockRecord";
|
|
3
|
+
import type { IRecordLockingGetLockRecord } from "./abstractions/IRecordLockingGetLockRecord";
|
|
4
|
+
import type { IRecordLockingIsEntryLocked } from "./abstractions/IRecordLockingIsEntryLocked";
|
|
5
|
+
import type { IRecordLockingListLockRecords } from "./abstractions/IRecordLockingListLockRecords";
|
|
6
|
+
import type { IRecordLockingLockEntry } from "./abstractions/IRecordLockingLockEntry";
|
|
7
|
+
import type { IRecordLockingUnlockEntry } from "./abstractions/IRecordLockingUnlockEntry";
|
|
8
|
+
import type { IRecordLockingError, IRecordLockingRecord } from "../types";
|
|
9
|
+
import type { IRecordLockingUpdateEntryLock } from "./abstractions/IRecordLockingUpdateEntryLock";
|
|
10
|
+
import type { IRecordLockingGetLockedEntryLockRecord } from "./abstractions/IRecordLockingGetLockedEntryLockRecord";
|
|
13
11
|
export interface ICreateRecordLockingParams {
|
|
14
12
|
client: ApolloClient<any>;
|
|
15
13
|
setLoading: (loading: boolean) => void;
|
|
16
14
|
}
|
|
17
15
|
export interface IRecordLockingParams {
|
|
18
|
-
client: IRecordLockingClient;
|
|
19
16
|
setLoading: (loading: boolean) => void;
|
|
20
17
|
getLockRecord: IRecordLockingGetLockRecord;
|
|
21
18
|
getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;
|
|
@@ -23,7 +20,6 @@ export interface IRecordLockingParams {
|
|
|
23
20
|
listLockRecords: IRecordLockingListLockRecords;
|
|
24
21
|
lockEntry: IRecordLockingLockEntry;
|
|
25
22
|
unlockEntry: IRecordLockingUnlockEntry;
|
|
26
|
-
unlockEntryRequest: IRecordLockingUnlockEntryRequest;
|
|
27
23
|
updateEntryLock: IRecordLockingUpdateEntryLock;
|
|
28
24
|
}
|
|
29
25
|
export interface IOnErrorCb {
|
package/domain/RecordLocking.js
CHANGED
|
@@ -15,7 +15,6 @@ var _RecordLockingIsEntryLocked = require("./RecordLockingIsEntryLocked");
|
|
|
15
15
|
var _RecordLockingListLockRecords = require("./RecordLockingListLockRecords");
|
|
16
16
|
var _RecordLockingLockEntry = require("./RecordLockingLockEntry");
|
|
17
17
|
var _RecordLockingUnlockEntry = require("./RecordLockingUnlockEntry");
|
|
18
|
-
var _RecordLockingUnlockEntryRequest = require("./RecordLockingUnlockEntryRequest");
|
|
19
18
|
var _RecordLockingClient = require("./RecordLockingClient");
|
|
20
19
|
var _createRecordLockingError = require("./utils/createRecordLockingError");
|
|
21
20
|
var _parseIdentifier9 = require("@webiny/utils/parseIdentifier");
|
|
@@ -28,15 +27,11 @@ var RecordLocking = /*#__PURE__*/function () {
|
|
|
28
27
|
(0, _defineProperty2.default)(this, "loading", false);
|
|
29
28
|
(0, _defineProperty2.default)(this, "records", []);
|
|
30
29
|
(0, _defineProperty2.default)(this, "onErrorCb", null);
|
|
31
|
-
this.client = params.client;
|
|
32
30
|
this._setLoading = params.setLoading;
|
|
33
31
|
this._getLockRecord = params.getLockRecord;
|
|
34
32
|
this._getLockedEntryLockRecord = params.getLockedEntryLockRecord;
|
|
35
|
-
this._isEntryLocked = params.isEntryLocked;
|
|
36
33
|
this._listLockRecords = params.listLockRecords;
|
|
37
|
-
this._lockEntry = params.lockEntry;
|
|
38
34
|
this._unlockEntry = params.unlockEntry;
|
|
39
|
-
this._unlockEntryRequest = params.unlockEntryRequest;
|
|
40
35
|
this._updateEntryLock = params.updateEntryLock;
|
|
41
36
|
}
|
|
42
37
|
return (0, _createClass2.default)(RecordLocking, [{
|
|
@@ -159,16 +154,7 @@ var RecordLocking = /*#__PURE__*/function () {
|
|
|
159
154
|
if (!id) {
|
|
160
155
|
return result;
|
|
161
156
|
}
|
|
162
|
-
|
|
163
|
-
return r.entryId === id;
|
|
164
|
-
});
|
|
165
|
-
if (index === -1) {
|
|
166
|
-
return result;
|
|
167
|
-
}
|
|
168
|
-
this.records[index] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.records[index]), {}, {
|
|
169
|
-
$locked: undefined,
|
|
170
|
-
$selectable: true
|
|
171
|
-
});
|
|
157
|
+
this.removeEntryLock((0, _objectSpread2.default)({}, params));
|
|
172
158
|
return result;
|
|
173
159
|
} catch (ex) {
|
|
174
160
|
this.triggerOnError(ex);
|
|
@@ -356,14 +342,10 @@ var createRecordLocking = exports.createRecordLocking = function createRecordLoc
|
|
|
356
342
|
var unlockEntry = new _RecordLockingUnlockEntry.RecordLockingUnlockEntry({
|
|
357
343
|
client: client
|
|
358
344
|
});
|
|
359
|
-
var unlockEntryRequest = new _RecordLockingUnlockEntryRequest.RecordLockingUnlockEntryRequest({
|
|
360
|
-
client: client
|
|
361
|
-
});
|
|
362
345
|
var updateEntryLock = new _RecordLockingUpdateEntryLock.RecordLockingUpdateEntryLock({
|
|
363
346
|
client: client
|
|
364
347
|
});
|
|
365
348
|
return new RecordLocking({
|
|
366
|
-
client: client,
|
|
367
349
|
setLoading: config.setLoading,
|
|
368
350
|
getLockRecord: getLockRecord,
|
|
369
351
|
getLockedEntryLockRecord: getLockedEntryLockRecord,
|
|
@@ -371,8 +353,7 @@ var createRecordLocking = exports.createRecordLocking = function createRecordLoc
|
|
|
371
353
|
listLockRecords: listLockRecords,
|
|
372
354
|
updateEntryLock: updateEntryLock,
|
|
373
355
|
lockEntry: lockEntry,
|
|
374
|
-
unlockEntry: unlockEntry
|
|
375
|
-
unlockEntryRequest: unlockEntryRequest
|
|
356
|
+
unlockEntry: unlockEntry
|
|
376
357
|
});
|
|
377
358
|
};
|
|
378
359
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_RecordLockingGetLockRecord","require","_RecordLockingIsEntryLocked","_RecordLockingListLockRecords","_RecordLockingLockEntry","_RecordLockingUnlockEntry","_RecordLockingUnlockEntryRequest","_RecordLockingClient","_createRecordLockingError","_parseIdentifier9","_createCacheKey","_RecordLockingUpdateEntryLock","_RecordLockingGetLockedEntryLockRecord","RecordLocking","params","_classCallCheck2","default","_defineProperty2","client","_setLoading","setLoading","_getLockRecord","getLockRecord","_getLockedEntryLockRecord","getLockedEntryLockRecord","_isEntryLocked","isEntryLocked","_listLockRecords","listLockRecords","_lockEntry","lockEntry","_unlockEntry","unlockEntry","_unlockEntryRequest","unlockEntryRequest","_updateEntryLock","updateEntryLock","_createClass2","key","value","setRecords","folderId","type","records","result","fetchAndAssignRecords","undefined","map","record","_parseIdentifier","parseIdentifier","id","entryId","_objectSpread2","$lockingType","$locked","$selectable","fetchLockRecord","_parseIdentifier2","execute","data","error","ex","fetchLockedEntryLockRecord","_parseIdentifier3","getLockRecordEntry","find","_parseIdentifier4","isRecordLocked","r","_parseIdentifier5","expiresOn","isExpired","isLockExpired","triggerOnError","removeEntryLock","index","findIndex","force","onError","cb","onErrorCb","setIsLoading","input","Date","loading","_this","length","assignedIdList","assignRecords","where","id_in","limit","console","createRecordLockingError","message","code","_iterator","_createForOfIteratorHelper2","_step","_loop","_parseIdentifier6","concat","lockedBy","lockedOn","actions","s","n","done","err","e","f","_this2","keys","_parseIdentifier7","cacheKey","createCacheKey","currentRecordsCacheKey","currentRecordType","currentFolderId","reduce","collection","_parseIdentifier8","push","$type","createRecordLocking","exports","config","RecordLockingClient","RecordLockingGetLockRecord","RecordLockingGetLockedEntryLockRecord","RecordLockingIsEntryLocked","RecordLockingListLockRecords","RecordLockingLockEntry","RecordLockingUnlockEntry","RecordLockingUnlockEntryRequest","RecordLockingUpdateEntryLock"],"sources":["RecordLocking.ts"],"sourcesContent":["import { IRecordLocking, IRecordLockingUpdateEntryLockResult } from \"./abstractions/IRecordLocking\";\nimport { ApolloClient } from \"apollo-client\";\nimport { RecordLockingGetLockRecord } from \"./RecordLockingGetLockRecord\";\nimport { RecordLockingIsEntryLocked } from \"./RecordLockingIsEntryLocked\";\nimport { RecordLockingListLockRecords } from \"./RecordLockingListLockRecords\";\nimport { RecordLockingLockEntry } from \"./RecordLockingLockEntry\";\nimport { RecordLockingUnlockEntry } from \"./RecordLockingUnlockEntry\";\nimport { RecordLockingUnlockEntryRequest } from \"./RecordLockingUnlockEntryRequest\";\nimport { RecordLockingClient } from \"./RecordLockingClient\";\nimport { IRecordLockingGetLockRecord } from \"./abstractions/IRecordLockingGetLockRecord\";\nimport { IRecordLockingIsEntryLocked } from \"./abstractions/IRecordLockingIsEntryLocked\";\nimport {\n IRecordLockingListLockRecords,\n IRecordLockingListLockRecordsResult\n} from \"./abstractions/IRecordLockingListLockRecords\";\nimport { IRecordLockingLockEntry } from \"./abstractions/IRecordLockingLockEntry\";\nimport {\n IRecordLockingUnlockEntry,\n IRecordLockingUnlockEntryResult\n} from \"./abstractions/IRecordLockingUnlockEntry\";\nimport { IRecordLockingUnlockEntryRequest } from \"./abstractions/IRecordLockingUnlockEntryRequest\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IFetchLockRecordResult,\n IIsRecordLockedParams,\n IRecordLockingError,\n IRecordLockingLockRecord,\n IRecordLockingRecord,\n IPossiblyRecordLockingRecord,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { IRecordLockingClient } from \"./abstractions/IRecordLockingClient\";\nimport { createRecordLockingError } from \"./utils/createRecordLockingError\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier\";\nimport { createCacheKey } from \"~/utils/createCacheKey\";\nimport { RecordLockingUpdateEntryLock } from \"~/domain/RecordLockingUpdateEntryLock\";\nimport { IRecordLockingUpdateEntryLock } from \"~/domain/abstractions/IRecordLockingUpdateEntryLock\";\nimport { RecordLockingGetLockedEntryLockRecord } from \"~/domain/RecordLockingGetLockedEntryLockRecord\";\nimport { IRecordLockingGetLockedEntryLockRecord } from \"./abstractions/IRecordLockingGetLockedEntryLockRecord\";\n\nexport interface ICreateRecordLockingParams {\n client: ApolloClient<any>;\n setLoading: (loading: boolean) => void;\n}\n\nexport interface IRecordLockingParams {\n client: IRecordLockingClient;\n setLoading: (loading: boolean) => void;\n getLockRecord: IRecordLockingGetLockRecord;\n getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n isEntryLocked: IRecordLockingIsEntryLocked;\n listLockRecords: IRecordLockingListLockRecords;\n lockEntry: IRecordLockingLockEntry;\n unlockEntry: IRecordLockingUnlockEntry;\n unlockEntryRequest: IRecordLockingUnlockEntryRequest;\n updateEntryLock: IRecordLockingUpdateEntryLock;\n}\n\nexport interface IOnErrorCb {\n (error: IRecordLockingError): void;\n}\n\nclass RecordLocking<T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord>\n implements IRecordLocking<T>\n{\n private currentRecordType?: string;\n private currentFolderId?: string;\n private currentRecordsCacheKey?: string;\n private readonly _setLoading: (loading: boolean) => void;\n public loading = false;\n public records: IRecordLockingRecord[] = [];\n\n private readonly client: IRecordLockingClient;\n private readonly _getLockRecord: IRecordLockingGetLockRecord;\n private readonly _isEntryLocked: IRecordLockingIsEntryLocked;\n private readonly _getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n private readonly _listLockRecords: IRecordLockingListLockRecords;\n private readonly _lockEntry: IRecordLockingLockEntry;\n private readonly _unlockEntry: IRecordLockingUnlockEntry;\n private readonly _unlockEntryRequest: IRecordLockingUnlockEntryRequest;\n private readonly _updateEntryLock: IRecordLockingUpdateEntryLock;\n\n private onErrorCb: IOnErrorCb | null = null;\n\n public constructor(params: IRecordLockingParams) {\n this.client = params.client;\n this._setLoading = params.setLoading;\n this._getLockRecord = params.getLockRecord;\n this._getLockedEntryLockRecord = params.getLockedEntryLockRecord;\n this._isEntryLocked = params.isEntryLocked;\n this._listLockRecords = params.listLockRecords;\n this._lockEntry = params.lockEntry;\n this._unlockEntry = params.unlockEntry;\n this._unlockEntryRequest = params.unlockEntryRequest;\n this._updateEntryLock = params.updateEntryLock;\n }\n\n public async setRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IRecordLockingRecord[] | undefined> {\n const result = await this.fetchAndAssignRecords(folderId, type, records);\n if (!result) {\n return undefined;\n }\n\n return result.map(record => {\n const { id: entryId } = parseIdentifier(record.id);\n return {\n ...record,\n $lockingType: type,\n $locked: record.$locked,\n $selectable: record.$locked ? false : record.$selectable,\n entryId\n };\n });\n }\n\n public async fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n\n try {\n const result = await this._getLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n\n return {\n data: result.data,\n error: result.error\n };\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public async fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n const result = await this._getLockedEntryLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n return result.data;\n }\n\n public getLockRecordEntry(id: string): IRecordLockingRecord | undefined {\n return this.records.find(record => {\n const { id: entryId } = parseIdentifier(id);\n return record.entryId === entryId;\n });\n }\n\n public isRecordLocked(record: IIsRecordLockedParams): boolean {\n const result = this.records.find(r => {\n const { id: entryId } = parseIdentifier(record.id);\n\n return r.entryId === entryId && !!r.$locked && r.$lockingType === record.$lockingType;\n });\n if (!result?.$locked?.expiresOn) {\n return false;\n }\n const isExpired = this.isLockExpired(result.$locked.expiresOn);\n return !isExpired;\n }\n\n public async updateEntryLock(\n params: IUpdateEntryLockParams\n ): Promise<IRecordLockingUpdateEntryLockResult> {\n try {\n return await this._updateEntryLock.execute({\n id: params.id,\n type: params.$lockingType\n });\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public removeEntryLock(params: IUnlockEntryParams): void {\n const index = this.records.findIndex(record => {\n return record.entryId === params.id && record.$lockingType === params.$lockingType;\n });\n if (index === -1) {\n return;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: null,\n $selectable: true\n };\n }\n\n public async unlockEntry(\n params: IUnlockEntryParams,\n force?: boolean\n ): Promise<IRecordLockingUnlockEntryResult> {\n try {\n const result = await this._unlockEntry.execute({\n id: params.id,\n type: params.$lockingType,\n force\n });\n\n const id = result.data?.id;\n if (!id) {\n return result;\n }\n const index = this.records.findIndex(r => r.entryId === id);\n if (index === -1) {\n return result;\n }\n\n this.records[index] = {\n ...this.records[index],\n $locked: undefined,\n $selectable: true\n };\n\n return result;\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public onError(cb: IOnErrorCb): void {\n this.onErrorCb = cb;\n }\n\n public triggerOnError(error: IRecordLockingError): void {\n this.setIsLoading(false);\n if (!this.onErrorCb) {\n return;\n }\n this.onErrorCb(error);\n }\n\n public isLockExpired(input: Date | string): boolean {\n const expiresOn = new Date(input);\n return expiresOn <= new Date();\n }\n\n private setIsLoading(loading: boolean): void {\n this._setLoading(loading);\n this.loading = loading;\n }\n\n private async fetchAndAssignRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IPossiblyRecordLockingRecord[] | undefined> {\n if (records.length === 0) {\n return;\n } else if (this.loading) {\n return;\n }\n const assignedIdList = await this.assignRecords(folderId, type, records);\n if (assignedIdList.length === 0) {\n return;\n }\n this.setIsLoading(true);\n let result: IRecordLockingListLockRecordsResult;\n try {\n result = await this._listLockRecords.execute({\n where: {\n id_in: assignedIdList,\n type\n },\n limit: 10000\n });\n } catch (ex) {\n console.error(ex);\n this.triggerOnError(ex);\n return;\n } finally {\n this.setIsLoading(false);\n }\n if (result.error) {\n this.triggerOnError(result.error);\n return;\n } else if (!result.data) {\n this.triggerOnError(\n createRecordLockingError({\n message: `There is no data in the result and there is no error. Please check the network tab for more info.`,\n code: \"NO_DATA_IN_RESULT\"\n })\n );\n return;\n } else if (result.data.length === 0) {\n return;\n }\n\n for (const record of result.data) {\n const index = this.records.findIndex(r => {\n const { id: entryId } = parseIdentifier(record.id);\n return r.entryId === entryId;\n });\n if (index < 0) {\n console.error(`There is no record with id ${record.id} in the records array.`);\n continue;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: {\n lockedBy: record.lockedBy,\n expiresOn: record.expiresOn,\n lockedOn: record.lockedOn,\n actions: record.actions\n }\n };\n }\n\n return this.records;\n }\n /**\n * Assign records and return the assigned ID list.\n */\n private async assignRecords(folderId: string, type: string, records: T[]): Promise<string[]> {\n /**\n * First we check the record keys against ones in the local cache.\n */\n const keys = records.map(record => {\n if (record.entryId) {\n return record.entryId;\n }\n const { id: entryId } = parseIdentifier(record.id);\n return entryId;\n });\n const cacheKey = await createCacheKey(keys);\n if (this.currentRecordsCacheKey === cacheKey) {\n return [];\n }\n this.currentRecordsCacheKey = cacheKey;\n\n /**\n * Reset records if new type is not as same as the old type / folderId.\n */\n if (this.currentRecordType !== type || this.currentFolderId !== folderId) {\n this.records = [];\n this.currentRecordType = type;\n this.currentFolderId = folderId;\n }\n\n return records.reduce<string[]>((collection, record) => {\n const { id: entryId } = parseIdentifier(record.id);\n const index = this.records.findIndex(r => r.entryId === entryId);\n if (index >= 0) {\n return collection;\n }\n this.records.push({\n ...record,\n entryId,\n $lockingType: type,\n $locked: undefined\n });\n if (record.$type !== \"RECORD\") {\n return collection;\n }\n collection.push(entryId);\n return collection;\n }, []);\n }\n}\n\nexport const createRecordLocking = <T extends IRecordLockingRecord>(\n config: ICreateRecordLockingParams\n): IRecordLocking => {\n const client = new RecordLockingClient({\n client: config.client\n });\n\n const getLockRecord = new RecordLockingGetLockRecord({\n client\n });\n\n const getLockedEntryLockRecord = new RecordLockingGetLockedEntryLockRecord({\n client\n });\n\n const isEntryLocked = new RecordLockingIsEntryLocked({\n client\n });\n\n const listLockRecords = new RecordLockingListLockRecords({\n client\n });\n\n const lockEntry = new RecordLockingLockEntry({\n client\n });\n\n const unlockEntry = new RecordLockingUnlockEntry({\n client\n });\n const unlockEntryRequest = new RecordLockingUnlockEntryRequest({\n client\n });\n\n const updateEntryLock = new RecordLockingUpdateEntryLock({\n client\n });\n\n return new RecordLocking<T>({\n client,\n setLoading: config.setLoading,\n getLockRecord,\n getLockedEntryLockRecord,\n isEntryLocked,\n listLockRecords,\n updateEntryLock,\n lockEntry,\n unlockEntry,\n unlockEntryRequest\n });\n};\n"],"mappings":";;;;;;;;;;;;AAEA,IAAAA,2BAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AACA,IAAAK,gCAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AA0BA,IAAAO,yBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AACA,IAAAU,6BAAA,GAAAV,OAAA;AAEA,IAAAW,sCAAA,GAAAX,OAAA;AAAuG,IAyBjGY,aAAa;EAsBf,SAAAA,cAAmBC,MAA4B,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAH,aAAA;IAAA,IAAAI,gBAAA,CAAAD,OAAA,mBAfhC,KAAK;IAAA,IAAAC,gBAAA,CAAAD,OAAA,mBACmB,EAAE;IAAA,IAAAC,gBAAA,CAAAD,OAAA,qBAYJ,IAAI;IAGvC,IAAI,CAACE,MAAM,GAAGJ,MAAM,CAACI,MAAM;IAC3B,IAAI,CAACC,WAAW,GAAGL,MAAM,CAACM,UAAU;IACpC,IAAI,CAACC,cAAc,GAAGP,MAAM,CAACQ,aAAa;IAC1C,IAAI,CAACC,yBAAyB,GAAGT,MAAM,CAACU,wBAAwB;IAChE,IAAI,CAACC,cAAc,GAAGX,MAAM,CAACY,aAAa;IAC1C,IAAI,CAACC,gBAAgB,GAAGb,MAAM,CAACc,eAAe;IAC9C,IAAI,CAACC,UAAU,GAAGf,MAAM,CAACgB,SAAS;IAClC,IAAI,CAACC,YAAY,GAAGjB,MAAM,CAACkB,WAAW;IACtC,IAAI,CAACC,mBAAmB,GAAGnB,MAAM,CAACoB,kBAAkB;IACpD,IAAI,CAACC,gBAAgB,GAAGrB,MAAM,CAACsB,eAAe;EAClD;EAAC,WAAAC,aAAA,CAAArB,OAAA,EAAAH,aAAA;IAAAyB,GAAA;IAAAC,KAAA,EAED,eAAaC,UAAUA,CACnBC,QAAgB,EAChBC,IAAY,EACZC,OAAY,EAC+B;MAC3C,IAAMC,MAAM,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAACJ,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;MACxE,IAAI,CAACC,MAAM,EAAE;QACT,OAAOE,SAAS;MACpB;MAEA,OAAOF,MAAM,CAACG,GAAG,CAAC,UAAAC,MAAM,EAAI;QACxB,IAAAC,gBAAA,GAAwB,IAAAC,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAH,gBAAA,CAAXE,EAAE;QACV,WAAAE,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACOgC,MAAM;UACTM,YAAY,EAAEZ,IAAI;UAClBa,OAAO,EAAEP,MAAM,CAACO,OAAO;UACvBC,WAAW,EAAER,MAAM,CAACO,OAAO,GAAG,KAAK,GAAGP,MAAM,CAACQ,WAAW;UACxDJ,OAAO,EAAPA;QAAO;MAEf,CAAC,CAAC;IACN;EAAC;IAAAd,GAAA;IAAAC,KAAA,EAED,eAAakB,eAAeA,CAAC3C,MAA8B,EAAmC;MAC1F,IAAQqC,EAAE,GAAmBrC,MAAM,CAA3BqC,EAAE;QAAEG,YAAY,GAAKxC,MAAM,CAAvBwC,YAAY;MAExB,IAAAI,iBAAA,GAAwB,IAAAR,iCAAe,EAACC,EAAE,CAAC;QAA/BC,OAAO,GAAAM,iBAAA,CAAXP,EAAE;MAEV,IAAI;QACA,IAAMP,MAAM,GAAG,MAAM,IAAI,CAACvB,cAAc,CAACsC,OAAO,CAAC;UAC7CR,EAAE,EAAEC,OAAO;UACXV,IAAI,EAAEY;QACV,CAAC,CAAC;QAEF,OAAO;UACHM,IAAI,EAAEhB,MAAM,CAACgB,IAAI;UACjBC,KAAK,EAAEjB,MAAM,CAACiB;QAClB,CAAC;MACL,CAAC,CAAC,OAAOC,EAAE,EAAE;QACT,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,eAAawB,0BAA0BA,CACnCjD,MAAyC,EACD;MACxC,IAAQqC,EAAE,GAAmBrC,MAAM,CAA3BqC,EAAE;QAAEG,YAAY,GAAKxC,MAAM,CAAvBwC,YAAY;MAExB,IAAAU,iBAAA,GAAwB,IAAAd,iCAAe,EAACC,EAAE,CAAC;QAA/BC,OAAO,GAAAY,iBAAA,CAAXb,EAAE;MACV,IAAMP,MAAM,GAAG,MAAM,IAAI,CAACrB,yBAAyB,CAACoC,OAAO,CAAC;QACxDR,EAAE,EAAEC,OAAO;QACXV,IAAI,EAAEY;MACV,CAAC,CAAC;MACF,OAAOV,MAAM,CAACgB,IAAI;IACtB;EAAC;IAAAtB,GAAA;IAAAC,KAAA,EAED,SAAO0B,kBAAkBA,CAACd,EAAU,EAAoC;MACpE,OAAO,IAAI,CAACR,OAAO,CAACuB,IAAI,CAAC,UAAAlB,MAAM,EAAI;QAC/B,IAAAmB,iBAAA,GAAwB,IAAAjB,iCAAe,EAACC,EAAE,CAAC;UAA/BC,OAAO,GAAAe,iBAAA,CAAXhB,EAAE;QACV,OAAOH,MAAM,CAACI,OAAO,KAAKA,OAAO;MACrC,CAAC,CAAC;IACN;EAAC;IAAAd,GAAA;IAAAC,KAAA,EAED,SAAO6B,cAAcA,CAACpB,MAA6B,EAAW;MAC1D,IAAMJ,MAAM,GAAG,IAAI,CAACD,OAAO,CAACuB,IAAI,CAAC,UAAAG,CAAC,EAAI;QAClC,IAAAC,iBAAA,GAAwB,IAAApB,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAkB,iBAAA,CAAXnB,EAAE;QAEV,OAAOkB,CAAC,CAACjB,OAAO,KAAKA,OAAO,IAAI,CAAC,CAACiB,CAAC,CAACd,OAAO,IAAIc,CAAC,CAACf,YAAY,KAAKN,MAAM,CAACM,YAAY;MACzF,CAAC,CAAC;MACF,IAAI,CAACV,MAAM,EAAEW,OAAO,EAAEgB,SAAS,EAAE;QAC7B,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,GAAG,IAAI,CAACC,aAAa,CAAC7B,MAAM,CAACW,OAAO,CAACgB,SAAS,CAAC;MAC9D,OAAO,CAACC,SAAS;IACrB;EAAC;IAAAlC,GAAA;IAAAC,KAAA,EAED,eAAaH,eAAeA,CACxBtB,MAA8B,EACc;MAC5C,IAAI;QACA,OAAO,MAAM,IAAI,CAACqB,gBAAgB,CAACwB,OAAO,CAAC;UACvCR,EAAE,EAAErC,MAAM,CAACqC,EAAE;UACbT,IAAI,EAAE5B,MAAM,CAACwC;QACjB,CAAC,CAAC;MACN,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACT,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,SAAOoC,eAAeA,CAAC7D,MAA0B,EAAQ;MACrD,IAAM8D,KAAK,GAAG,IAAI,CAACjC,OAAO,CAACkC,SAAS,CAAC,UAAA7B,MAAM,EAAI;QAC3C,OAAOA,MAAM,CAACI,OAAO,KAAKtC,MAAM,CAACqC,EAAE,IAAIH,MAAM,CAACM,YAAY,KAAKxC,MAAM,CAACwC,YAAY;MACtF,CAAC,CAAC;MACF,IAAIsB,KAAK,KAAK,CAAC,CAAC,EAAE;QACd;MACJ;MACA,IAAI,CAACjC,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZ,IAAI,CAAC2B,OAAO,CAACiC,KAAK,CAAC;QACtBrB,OAAO,EAAE,IAAI;QACbC,WAAW,EAAE;MAAI,EACpB;IACL;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,eAAaP,WAAWA,CACpBlB,MAA0B,EAC1BgE,KAAe,EACyB;MACxC,IAAI;QACA,IAAMlC,MAAM,GAAG,MAAM,IAAI,CAACb,YAAY,CAAC4B,OAAO,CAAC;UAC3CR,EAAE,EAAErC,MAAM,CAACqC,EAAE;UACbT,IAAI,EAAE5B,MAAM,CAACwC,YAAY;UACzBwB,KAAK,EAALA;QACJ,CAAC,CAAC;QAEF,IAAM3B,EAAE,GAAGP,MAAM,CAACgB,IAAI,EAAET,EAAE;QAC1B,IAAI,CAACA,EAAE,EAAE;UACL,OAAOP,MAAM;QACjB;QACA,IAAMgC,KAAK,GAAG,IAAI,CAACjC,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC;UAAA,OAAIA,CAAC,CAACjB,OAAO,KAAKD,EAAE;QAAA,EAAC;QAC3D,IAAIyB,KAAK,KAAK,CAAC,CAAC,EAAE;UACd,OAAOhC,MAAM;QACjB;QAEA,IAAI,CAACD,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZ,IAAI,CAAC2B,OAAO,CAACiC,KAAK,CAAC;UACtBrB,OAAO,EAAET,SAAS;UAClBU,WAAW,EAAE;QAAI,EACpB;QAED,OAAOZ,MAAM;MACjB,CAAC,CAAC,OAAOkB,EAAE,EAAE;QACT,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,SAAOwC,OAAOA,CAACC,EAAc,EAAQ;MACjC,IAAI,CAACC,SAAS,GAAGD,EAAE;IACvB;EAAC;IAAA1C,GAAA;IAAAC,KAAA,EAED,SAAOmC,cAAcA,CAACb,KAA0B,EAAQ;MACpD,IAAI,CAACqB,YAAY,CAAC,KAAK,CAAC;MACxB,IAAI,CAAC,IAAI,CAACD,SAAS,EAAE;QACjB;MACJ;MACA,IAAI,CAACA,SAAS,CAACpB,KAAK,CAAC;IACzB;EAAC;IAAAvB,GAAA;IAAAC,KAAA,EAED,SAAOkC,aAAaA,CAACU,KAAoB,EAAW;MAChD,IAAMZ,SAAS,GAAG,IAAIa,IAAI,CAACD,KAAK,CAAC;MACjC,OAAOZ,SAAS,IAAI,IAAIa,IAAI,CAAC,CAAC;IAClC;EAAC;IAAA9C,GAAA;IAAAC,KAAA,EAED,SAAQ2C,YAAYA,CAACG,OAAgB,EAAQ;MACzC,IAAI,CAAClE,WAAW,CAACkE,OAAO,CAAC;MACzB,IAAI,CAACA,OAAO,GAAGA,OAAO;IAC1B;EAAC;IAAA/C,GAAA;IAAAC,KAAA,EAED,eAAcM,qBAAqBA,CAC/BJ,QAAgB,EAChBC,IAAY,EACZC,OAAY,EACuC;MAAA,IAAA2C,KAAA;MACnD,IAAI3C,OAAO,CAAC4C,MAAM,KAAK,CAAC,EAAE;QACtB;MACJ,CAAC,MAAM,IAAI,IAAI,CAACF,OAAO,EAAE;QACrB;MACJ;MACA,IAAMG,cAAc,GAAG,MAAM,IAAI,CAACC,aAAa,CAAChD,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;MACxE,IAAI6C,cAAc,CAACD,MAAM,KAAK,CAAC,EAAE;QAC7B;MACJ;MACA,IAAI,CAACL,YAAY,CAAC,IAAI,CAAC;MACvB,IAAItC,MAA2C;MAC/C,IAAI;QACAA,MAAM,GAAG,MAAM,IAAI,CAACjB,gBAAgB,CAACgC,OAAO,CAAC;UACzC+B,KAAK,EAAE;YACHC,KAAK,EAAEH,cAAc;YACrB9C,IAAI,EAAJA;UACJ,CAAC;UACDkD,KAAK,EAAE;QACX,CAAC,CAAC;MACN,CAAC,CAAC,OAAO9B,EAAE,EAAE;QACT+B,OAAO,CAAChC,KAAK,CAACC,EAAE,CAAC;QACjB,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB;MACJ,CAAC,SAAS;QACN,IAAI,CAACoB,YAAY,CAAC,KAAK,CAAC;MAC5B;MACA,IAAItC,MAAM,CAACiB,KAAK,EAAE;QACd,IAAI,CAACa,cAAc,CAAC9B,MAAM,CAACiB,KAAK,CAAC;QACjC;MACJ,CAAC,MAAM,IAAI,CAACjB,MAAM,CAACgB,IAAI,EAAE;QACrB,IAAI,CAACc,cAAc,CACf,IAAAoB,kDAAwB,EAAC;UACrBC,OAAO,qGAAqG;UAC5GC,IAAI,EAAE;QACV,CAAC,CACL,CAAC;QACD;MACJ,CAAC,MAAM,IAAIpD,MAAM,CAACgB,IAAI,CAAC2B,MAAM,KAAK,CAAC,EAAE;QACjC;MACJ;MAAC,IAAAU,SAAA,OAAAC,2BAAA,CAAAlF,OAAA,EAEoB4B,MAAM,CAACgB,IAAI;QAAAuC,KAAA;MAAA;QAAA,IAAAC,KAAA,kBAAAA,MAAA,EAAE;UAAA,IAAvBpD,MAAM,GAAAmD,KAAA,CAAA5D,KAAA;UACb,IAAMqC,KAAK,GAAGU,KAAI,CAAC3C,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC,EAAI;YACtC,IAAAgC,iBAAA,GAAwB,IAAAnD,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;cAAtCC,OAAO,GAAAiD,iBAAA,CAAXlD,EAAE;YACV,OAAOkB,CAAC,CAACjB,OAAO,KAAKA,OAAO;UAChC,CAAC,CAAC;UACF,IAAIwB,KAAK,GAAG,CAAC,EAAE;YACXiB,OAAO,CAAChC,KAAK,+BAAAyC,MAAA,CAA+BtD,MAAM,CAACG,EAAE,2BAAwB,CAAC;YAAC;UAEnF;UACAmC,KAAI,CAAC3C,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZsE,KAAI,CAAC3C,OAAO,CAACiC,KAAK,CAAC;YACtBrB,OAAO,EAAE;cACLgD,QAAQ,EAAEvD,MAAM,CAACuD,QAAQ;cACzBhC,SAAS,EAAEvB,MAAM,CAACuB,SAAS;cAC3BiC,QAAQ,EAAExD,MAAM,CAACwD,QAAQ;cACzBC,OAAO,EAAEzD,MAAM,CAACyD;YACpB;UAAC,EACJ;QACL,CAAC;QAlBD,KAAAR,SAAA,CAAAS,CAAA,MAAAP,KAAA,GAAAF,SAAA,CAAAU,CAAA,IAAAC,IAAA;UAAA,UAAAR,KAAA,IAOQ;QAAS;MAWhB,SAAAS,GAAA;QAAAZ,SAAA,CAAAa,CAAA,CAAAD,GAAA;MAAA;QAAAZ,SAAA,CAAAc,CAAA;MAAA;MAED,OAAO,IAAI,CAACpE,OAAO;IACvB;IACA;AACJ;AACA;EAFI;IAAAL,GAAA;IAAAC,KAAA,EAGA,eAAckD,aAAaA,CAAChD,QAAgB,EAAEC,IAAY,EAAEC,OAAY,EAAqB;MAAA,IAAAqE,MAAA;MACzF;AACR;AACA;MACQ,IAAMC,IAAI,GAAGtE,OAAO,CAACI,GAAG,CAAC,UAAAC,MAAM,EAAI;QAC/B,IAAIA,MAAM,CAACI,OAAO,EAAE;UAChB,OAAOJ,MAAM,CAACI,OAAO;QACzB;QACA,IAAA8D,iBAAA,GAAwB,IAAAhE,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAA8D,iBAAA,CAAX/D,EAAE;QACV,OAAOC,OAAO;MAClB,CAAC,CAAC;MACF,IAAM+D,QAAQ,GAAG,MAAM,IAAAC,8BAAc,EAACH,IAAI,CAAC;MAC3C,IAAI,IAAI,CAACI,sBAAsB,KAAKF,QAAQ,EAAE;QAC1C,OAAO,EAAE;MACb;MACA,IAAI,CAACE,sBAAsB,GAAGF,QAAQ;;MAEtC;AACR;AACA;MACQ,IAAI,IAAI,CAACG,iBAAiB,KAAK5E,IAAI,IAAI,IAAI,CAAC6E,eAAe,KAAK9E,QAAQ,EAAE;QACtE,IAAI,CAACE,OAAO,GAAG,EAAE;QACjB,IAAI,CAAC2E,iBAAiB,GAAG5E,IAAI;QAC7B,IAAI,CAAC6E,eAAe,GAAG9E,QAAQ;MACnC;MAEA,OAAOE,OAAO,CAAC6E,MAAM,CAAW,UAACC,UAAU,EAAEzE,MAAM,EAAK;QACpD,IAAA0E,iBAAA,GAAwB,IAAAxE,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAsE,iBAAA,CAAXvE,EAAE;QACV,IAAMyB,KAAK,GAAGoC,MAAI,CAACrE,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC;UAAA,OAAIA,CAAC,CAACjB,OAAO,KAAKA,OAAO;QAAA,EAAC;QAChE,IAAIwB,KAAK,IAAI,CAAC,EAAE;UACZ,OAAO6C,UAAU;QACrB;QACAT,MAAI,CAACrE,OAAO,CAACgF,IAAI,KAAAtE,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACVgC,MAAM;UACTI,OAAO,EAAPA,OAAO;UACPE,YAAY,EAAEZ,IAAI;UAClBa,OAAO,EAAET;QAAS,EACrB,CAAC;QACF,IAAIE,MAAM,CAAC4E,KAAK,KAAK,QAAQ,EAAE;UAC3B,OAAOH,UAAU;QACrB;QACAA,UAAU,CAACE,IAAI,CAACvE,OAAO,CAAC;QACxB,OAAOqE,UAAU;MACrB,CAAC,EAAE,EAAE,CAAC;IACV;EAAC;AAAA;AAGE,IAAMI,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,SAAtBA,mBAAmBA,CAC5BE,MAAkC,EACjB;EACjB,IAAM7G,MAAM,GAAG,IAAI8G,wCAAmB,CAAC;IACnC9G,MAAM,EAAE6G,MAAM,CAAC7G;EACnB,CAAC,CAAC;EAEF,IAAMI,aAAa,GAAG,IAAI2G,sDAA0B,CAAC;IACjD/G,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMM,wBAAwB,GAAG,IAAI0G,4EAAqC,CAAC;IACvEhH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMQ,aAAa,GAAG,IAAIyG,sDAA0B,CAAC;IACjDjH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMU,eAAe,GAAG,IAAIwG,0DAA4B,CAAC;IACrDlH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMY,SAAS,GAAG,IAAIuG,8CAAsB,CAAC;IACzCnH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMc,WAAW,GAAG,IAAIsG,kDAAwB,CAAC;IAC7CpH,MAAM,EAANA;EACJ,CAAC,CAAC;EACF,IAAMgB,kBAAkB,GAAG,IAAIqG,gEAA+B,CAAC;IAC3DrH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMkB,eAAe,GAAG,IAAIoG,0DAA4B,CAAC;IACrDtH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIL,aAAa,CAAI;IACxBK,MAAM,EAANA,MAAM;IACNE,UAAU,EAAE2G,MAAM,CAAC3G,UAAU;IAC7BE,aAAa,EAAbA,aAAa;IACbE,wBAAwB,EAAxBA,wBAAwB;IACxBE,aAAa,EAAbA,aAAa;IACbE,eAAe,EAAfA,eAAe;IACfQ,eAAe,EAAfA,eAAe;IACfN,SAAS,EAATA,SAAS;IACTE,WAAW,EAAXA,WAAW;IACXE,kBAAkB,EAAlBA;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_RecordLockingGetLockRecord","require","_RecordLockingIsEntryLocked","_RecordLockingListLockRecords","_RecordLockingLockEntry","_RecordLockingUnlockEntry","_RecordLockingClient","_createRecordLockingError","_parseIdentifier9","_createCacheKey","_RecordLockingUpdateEntryLock","_RecordLockingGetLockedEntryLockRecord","RecordLocking","params","_classCallCheck2","default","_defineProperty2","_setLoading","setLoading","_getLockRecord","getLockRecord","_getLockedEntryLockRecord","getLockedEntryLockRecord","_listLockRecords","listLockRecords","_unlockEntry","unlockEntry","_updateEntryLock","updateEntryLock","_createClass2","key","value","setRecords","folderId","type","records","result","fetchAndAssignRecords","undefined","map","record","_parseIdentifier","parseIdentifier","id","entryId","_objectSpread2","$lockingType","$locked","$selectable","fetchLockRecord","_parseIdentifier2","execute","data","error","ex","fetchLockedEntryLockRecord","_parseIdentifier3","getLockRecordEntry","find","_parseIdentifier4","isRecordLocked","r","_parseIdentifier5","expiresOn","isExpired","isLockExpired","triggerOnError","removeEntryLock","index","findIndex","force","onError","cb","onErrorCb","setIsLoading","input","Date","loading","_this","length","assignedIdList","assignRecords","where","id_in","limit","console","createRecordLockingError","message","code","_iterator","_createForOfIteratorHelper2","_step","_loop","_parseIdentifier6","concat","lockedBy","lockedOn","actions","s","n","done","err","e","f","_this2","keys","_parseIdentifier7","cacheKey","createCacheKey","currentRecordsCacheKey","currentRecordType","currentFolderId","reduce","collection","_parseIdentifier8","push","$type","createRecordLocking","exports","config","client","RecordLockingClient","RecordLockingGetLockRecord","RecordLockingGetLockedEntryLockRecord","isEntryLocked","RecordLockingIsEntryLocked","RecordLockingListLockRecords","lockEntry","RecordLockingLockEntry","RecordLockingUnlockEntry","RecordLockingUpdateEntryLock"],"sources":["RecordLocking.ts"],"sourcesContent":["import type {\n IRecordLocking,\n IRecordLockingUpdateEntryLockResult\n} from \"./abstractions/IRecordLocking\";\nimport { ApolloClient } from \"apollo-client\";\nimport { RecordLockingGetLockRecord } from \"./RecordLockingGetLockRecord\";\nimport { RecordLockingIsEntryLocked } from \"./RecordLockingIsEntryLocked\";\nimport { RecordLockingListLockRecords } from \"./RecordLockingListLockRecords\";\nimport { RecordLockingLockEntry } from \"./RecordLockingLockEntry\";\nimport { RecordLockingUnlockEntry } from \"./RecordLockingUnlockEntry\";\nimport { RecordLockingClient } from \"./RecordLockingClient\";\nimport type { IRecordLockingGetLockRecord } from \"./abstractions/IRecordLockingGetLockRecord\";\nimport type { IRecordLockingIsEntryLocked } from \"./abstractions/IRecordLockingIsEntryLocked\";\nimport type {\n IRecordLockingListLockRecords,\n IRecordLockingListLockRecordsResult\n} from \"./abstractions/IRecordLockingListLockRecords\";\nimport type { IRecordLockingLockEntry } from \"./abstractions/IRecordLockingLockEntry\";\nimport type {\n IRecordLockingUnlockEntry,\n IRecordLockingUnlockEntryResult\n} from \"./abstractions/IRecordLockingUnlockEntry\";\nimport type {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IFetchLockRecordResult,\n IIsRecordLockedParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingError,\n IRecordLockingLockRecord,\n IRecordLockingRecord,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { createRecordLockingError } from \"./utils/createRecordLockingError\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier\";\nimport { createCacheKey } from \"~/utils/createCacheKey\";\nimport { RecordLockingUpdateEntryLock } from \"~/domain/RecordLockingUpdateEntryLock\";\nimport type { IRecordLockingUpdateEntryLock } from \"~/domain/abstractions/IRecordLockingUpdateEntryLock\";\nimport { RecordLockingGetLockedEntryLockRecord } from \"~/domain/RecordLockingGetLockedEntryLockRecord\";\nimport type { IRecordLockingGetLockedEntryLockRecord } from \"./abstractions/IRecordLockingGetLockedEntryLockRecord\";\n\nexport interface ICreateRecordLockingParams {\n client: ApolloClient<any>;\n setLoading: (loading: boolean) => void;\n}\n\nexport interface IRecordLockingParams {\n setLoading: (loading: boolean) => void;\n getLockRecord: IRecordLockingGetLockRecord;\n getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n isEntryLocked: IRecordLockingIsEntryLocked;\n listLockRecords: IRecordLockingListLockRecords;\n lockEntry: IRecordLockingLockEntry;\n unlockEntry: IRecordLockingUnlockEntry;\n updateEntryLock: IRecordLockingUpdateEntryLock;\n}\n\nexport interface IOnErrorCb {\n (error: IRecordLockingError): void;\n}\n\nclass RecordLocking<T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord>\n implements IRecordLocking<T>\n{\n private currentRecordType?: string;\n private currentFolderId?: string;\n private currentRecordsCacheKey?: string;\n private readonly _setLoading: (loading: boolean) => void;\n public loading = false;\n public records: IRecordLockingRecord[] = [];\n private readonly _getLockRecord: IRecordLockingGetLockRecord;\n private readonly _getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n private readonly _listLockRecords: IRecordLockingListLockRecords;\n private readonly _unlockEntry: IRecordLockingUnlockEntry;\n private readonly _updateEntryLock: IRecordLockingUpdateEntryLock;\n\n private onErrorCb: IOnErrorCb | null = null;\n\n public constructor(params: IRecordLockingParams) {\n this._setLoading = params.setLoading;\n this._getLockRecord = params.getLockRecord;\n this._getLockedEntryLockRecord = params.getLockedEntryLockRecord;\n this._listLockRecords = params.listLockRecords;\n this._unlockEntry = params.unlockEntry;\n this._updateEntryLock = params.updateEntryLock;\n }\n\n public async setRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IRecordLockingRecord[] | undefined> {\n const result = await this.fetchAndAssignRecords(folderId, type, records);\n if (!result) {\n return undefined;\n }\n\n return result.map(record => {\n const { id: entryId } = parseIdentifier(record.id);\n return {\n ...record,\n $lockingType: type,\n $locked: record.$locked,\n $selectable: record.$locked ? false : record.$selectable,\n entryId\n };\n });\n }\n\n public async fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n\n try {\n const result = await this._getLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n\n return {\n data: result.data,\n error: result.error\n };\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public async fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n const result = await this._getLockedEntryLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n return result.data;\n }\n\n public getLockRecordEntry(id: string): IRecordLockingRecord | undefined {\n return this.records.find(record => {\n const { id: entryId } = parseIdentifier(id);\n return record.entryId === entryId;\n });\n }\n\n public isRecordLocked(record: IIsRecordLockedParams): boolean {\n const result = this.records.find(r => {\n const { id: entryId } = parseIdentifier(record.id);\n\n return r.entryId === entryId && !!r.$locked && r.$lockingType === record.$lockingType;\n });\n if (!result?.$locked?.expiresOn) {\n return false;\n }\n const isExpired = this.isLockExpired(result.$locked.expiresOn);\n return !isExpired;\n }\n\n public async updateEntryLock(\n params: IUpdateEntryLockParams\n ): Promise<IRecordLockingUpdateEntryLockResult> {\n try {\n return await this._updateEntryLock.execute({\n id: params.id,\n type: params.$lockingType\n });\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public removeEntryLock(params: IUnlockEntryParams): void {\n const index = this.records.findIndex(record => {\n return record.entryId === params.id && record.$lockingType === params.$lockingType;\n });\n if (index === -1) {\n return;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: null,\n $selectable: true\n };\n }\n\n public async unlockEntry(\n params: IUnlockEntryParams,\n force?: boolean\n ): Promise<IRecordLockingUnlockEntryResult> {\n try {\n const result = await this._unlockEntry.execute({\n id: params.id,\n type: params.$lockingType,\n force\n });\n\n const id = result.data?.id;\n if (!id) {\n return result;\n }\n this.removeEntryLock({\n ...params\n });\n return result;\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public onError(cb: IOnErrorCb): void {\n this.onErrorCb = cb;\n }\n\n public triggerOnError(error: IRecordLockingError): void {\n this.setIsLoading(false);\n if (!this.onErrorCb) {\n return;\n }\n this.onErrorCb(error);\n }\n\n public isLockExpired(input: Date | string): boolean {\n const expiresOn = new Date(input);\n return expiresOn <= new Date();\n }\n\n private setIsLoading(loading: boolean): void {\n this._setLoading(loading);\n this.loading = loading;\n }\n\n private async fetchAndAssignRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IPossiblyRecordLockingRecord[] | undefined> {\n if (records.length === 0) {\n return;\n } else if (this.loading) {\n return;\n }\n const assignedIdList = await this.assignRecords(folderId, type, records);\n if (assignedIdList.length === 0) {\n return;\n }\n this.setIsLoading(true);\n let result: IRecordLockingListLockRecordsResult;\n try {\n result = await this._listLockRecords.execute({\n where: {\n id_in: assignedIdList,\n type\n },\n limit: 10000\n });\n } catch (ex) {\n console.error(ex);\n this.triggerOnError(ex);\n return;\n } finally {\n this.setIsLoading(false);\n }\n if (result.error) {\n this.triggerOnError(result.error);\n return;\n } else if (!result.data) {\n this.triggerOnError(\n createRecordLockingError({\n message: `There is no data in the result and there is no error. Please check the network tab for more info.`,\n code: \"NO_DATA_IN_RESULT\"\n })\n );\n return;\n } else if (result.data.length === 0) {\n return;\n }\n\n for (const record of result.data) {\n const index = this.records.findIndex(r => {\n const { id: entryId } = parseIdentifier(record.id);\n return r.entryId === entryId;\n });\n if (index < 0) {\n console.error(`There is no record with id ${record.id} in the records array.`);\n continue;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: {\n lockedBy: record.lockedBy,\n expiresOn: record.expiresOn,\n lockedOn: record.lockedOn,\n actions: record.actions\n }\n };\n }\n\n return this.records;\n }\n /**\n * Assign records and return the assigned ID list.\n */\n private async assignRecords(folderId: string, type: string, records: T[]): Promise<string[]> {\n /**\n * First we check the record keys against ones in the local cache.\n */\n const keys = records.map(record => {\n if (record.entryId) {\n return record.entryId;\n }\n const { id: entryId } = parseIdentifier(record.id);\n return entryId;\n });\n const cacheKey = await createCacheKey(keys);\n if (this.currentRecordsCacheKey === cacheKey) {\n return [];\n }\n this.currentRecordsCacheKey = cacheKey;\n\n /**\n * Reset records if new type is not as same as the old type / folderId.\n */\n if (this.currentRecordType !== type || this.currentFolderId !== folderId) {\n this.records = [];\n this.currentRecordType = type;\n this.currentFolderId = folderId;\n }\n\n return records.reduce<string[]>((collection, record) => {\n const { id: entryId } = parseIdentifier(record.id);\n const index = this.records.findIndex(r => r.entryId === entryId);\n if (index >= 0) {\n return collection;\n }\n this.records.push({\n ...record,\n entryId,\n $lockingType: type,\n $locked: undefined\n });\n if (record.$type !== \"RECORD\") {\n return collection;\n }\n collection.push(entryId);\n return collection;\n }, []);\n }\n}\n\nexport const createRecordLocking = <T extends IRecordLockingRecord>(\n config: ICreateRecordLockingParams\n): IRecordLocking => {\n const client = new RecordLockingClient({\n client: config.client\n });\n\n const getLockRecord = new RecordLockingGetLockRecord({\n client\n });\n\n const getLockedEntryLockRecord = new RecordLockingGetLockedEntryLockRecord({\n client\n });\n\n const isEntryLocked = new RecordLockingIsEntryLocked({\n client\n });\n\n const listLockRecords = new RecordLockingListLockRecords({\n client\n });\n\n const lockEntry = new RecordLockingLockEntry({\n client\n });\n\n const unlockEntry = new RecordLockingUnlockEntry({\n client\n });\n\n const updateEntryLock = new RecordLockingUpdateEntryLock({\n client\n });\n\n return new RecordLocking<T>({\n setLoading: config.setLoading,\n getLockRecord,\n getLockedEntryLockRecord,\n isEntryLocked,\n listLockRecords,\n updateEntryLock,\n lockEntry,\n unlockEntry\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IFetchLockedEntryLockRecordParams, IFetchLockRecordParams, IFetchLockRecordResult, IIsRecordLockedParams, IPossiblyRecordLockingRecord, IRecordLockingError, IRecordLockingLockRecord, IRecordLockingRecord, IUnlockEntryParams, IUpdateEntryLockParams } from "../../types";
|
|
2
2
|
import { IRecordLockingUnlockEntryResult } from "./IRecordLockingUnlockEntry";
|
|
3
3
|
export interface IRecordLockingUpdateEntryLockResult {
|
|
4
4
|
data: IRecordLockingLockRecord | null;
|
|
@@ -14,6 +14,12 @@ export interface IRecordLocking<T extends IPossiblyRecordLockingRecord = IPossib
|
|
|
14
14
|
fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult>;
|
|
15
15
|
fetchLockedEntryLockRecord(params: IFetchLockedEntryLockRecordParams): Promise<IRecordLockingLockRecord | null>;
|
|
16
16
|
updateEntryLock(params: IUpdateEntryLockParams): Promise<IRecordLockingUpdateEntryLockResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Removes entry lock from the state - this is not an API call.
|
|
19
|
+
*/
|
|
17
20
|
removeEntryLock(params: IUnlockEntryParams): void;
|
|
21
|
+
/**
|
|
22
|
+
* Unlocks entry via an API call.
|
|
23
|
+
*/
|
|
18
24
|
unlockEntry(params: IUnlockEntryParams, force?: boolean): Promise<IRecordLockingUnlockEntryResult>;
|
|
19
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IRecordLocking.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"names":[],"sources":["IRecordLocking.ts"],"sourcesContent":["import {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IFetchLockRecordResult,\n IIsRecordLockedParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingError,\n IRecordLockingLockRecord,\n IRecordLockingRecord,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { IRecordLockingUnlockEntryResult } from \"./IRecordLockingUnlockEntry\";\n\nexport interface IRecordLockingUpdateEntryLockResult {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n}\n\nexport interface IRecordLocking<\n T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord\n> {\n loading: boolean;\n records: IRecordLockingRecord[];\n setRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IRecordLockingRecord[] | undefined>;\n isLockExpired(input: Date | string): boolean;\n isRecordLocked(record: IIsRecordLockedParams): boolean;\n getLockRecordEntry(id: string): IRecordLockingRecord | undefined;\n fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult>;\n fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null>;\n updateEntryLock(params: IUpdateEntryLockParams): Promise<IRecordLockingUpdateEntryLockResult>;\n /**\n * Removes entry lock from the state - this is not an API call.\n */\n removeEntryLock(params: IUnlockEntryParams): void;\n /**\n * Unlocks entry via an API call.\n */\n unlockEntry(\n params: IUnlockEntryParams,\n force?: boolean\n ): Promise<IRecordLockingUnlockEntryResult>;\n}\n"],"mappings":"","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-record-locking",
|
|
3
|
-
"version": "5.43.0-beta.
|
|
3
|
+
"version": "5.43.0-beta.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
"@apollo/react-hooks": "3.1.5",
|
|
17
17
|
"@emotion/styled": "11.10.6",
|
|
18
18
|
"@material-design-icons/svg": "0.14.13",
|
|
19
|
-
"@webiny/app": "5.43.0-beta.
|
|
20
|
-
"@webiny/app-aco": "5.43.0-beta.
|
|
21
|
-
"@webiny/app-admin": "5.43.0-beta.
|
|
22
|
-
"@webiny/app-headless-cms": "5.43.0-beta.
|
|
23
|
-
"@webiny/app-security": "5.43.0-beta.
|
|
24
|
-
"@webiny/app-wcp": "5.43.0-beta.
|
|
25
|
-
"@webiny/app-websockets": "5.43.0-beta.
|
|
26
|
-
"@webiny/error": "5.43.0-beta.
|
|
27
|
-
"@webiny/form": "5.43.0-beta.
|
|
28
|
-
"@webiny/plugins": "5.43.0-beta.
|
|
29
|
-
"@webiny/react-router": "5.43.0-beta.
|
|
30
|
-
"@webiny/ui": "5.43.0-beta.
|
|
31
|
-
"@webiny/utils": "5.43.0-beta.
|
|
19
|
+
"@webiny/app": "5.43.0-beta.2",
|
|
20
|
+
"@webiny/app-aco": "5.43.0-beta.2",
|
|
21
|
+
"@webiny/app-admin": "5.43.0-beta.2",
|
|
22
|
+
"@webiny/app-headless-cms": "5.43.0-beta.2",
|
|
23
|
+
"@webiny/app-security": "5.43.0-beta.2",
|
|
24
|
+
"@webiny/app-wcp": "5.43.0-beta.2",
|
|
25
|
+
"@webiny/app-websockets": "5.43.0-beta.2",
|
|
26
|
+
"@webiny/error": "5.43.0-beta.2",
|
|
27
|
+
"@webiny/form": "5.43.0-beta.2",
|
|
28
|
+
"@webiny/plugins": "5.43.0-beta.2",
|
|
29
|
+
"@webiny/react-router": "5.43.0-beta.2",
|
|
30
|
+
"@webiny/ui": "5.43.0-beta.2",
|
|
31
|
+
"@webiny/utils": "5.43.0-beta.2",
|
|
32
32
|
"apollo-client": "2.6.10",
|
|
33
33
|
"apollo-link": "1.2.14",
|
|
34
34
|
"crypto-hash": "3.0.0",
|
|
@@ -37,10 +37,9 @@
|
|
|
37
37
|
"react-dom": "18.2.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@webiny/project-utils": "5.43.0-beta.
|
|
40
|
+
"@webiny/project-utils": "5.43.0-beta.2",
|
|
41
41
|
"rimraf": "6.0.1",
|
|
42
|
-
"
|
|
43
|
-
"typescript": "4.9.5"
|
|
42
|
+
"typescript": "5.3.3"
|
|
44
43
|
},
|
|
45
44
|
"publishConfig": {
|
|
46
45
|
"access": "public",
|
|
@@ -50,5 +49,5 @@
|
|
|
50
49
|
"build": "node ../cli/bin.js run build",
|
|
51
50
|
"watch": "node ../cli/bin.js run watch"
|
|
52
51
|
},
|
|
53
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "dbed8c263df662358aca18c3cf452cd280f2dfd9"
|
|
54
53
|
}
|
package/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { EntryTableItem } from "@webiny/app-headless-cms/types";
|
|
|
2
2
|
import { GenericRecord } from "@webiny/app/types";
|
|
3
3
|
import { IRecordLockingUnlockEntryResult } from "./domain/abstractions/IRecordLockingUnlockEntry";
|
|
4
4
|
import { SecurityPermission } from "@webiny/app-security/types";
|
|
5
|
+
import type { IRecordLockingUpdateEntryLockResult } from "./domain/abstractions/IRecordLocking.js";
|
|
5
6
|
export interface IRecordLockingIdentity {
|
|
6
7
|
id: string;
|
|
7
8
|
displayName: string;
|
|
@@ -36,7 +37,7 @@ export interface IRecordLockingContext<T extends IPossiblyRecordLockingRecord =
|
|
|
36
37
|
readonly records: IPossiblyRecordLockingRecord[];
|
|
37
38
|
readonly error?: IRecordLockingError | null;
|
|
38
39
|
setRecords(folderId: string, type: string, records: T[]): Promise<void>;
|
|
39
|
-
updateEntryLock(params: IUpdateEntryLockParams): Promise<
|
|
40
|
+
updateEntryLock(params: IUpdateEntryLockParams): Promise<IRecordLockingUpdateEntryLockResult>;
|
|
40
41
|
isRecordLocked(params?: IIsRecordLockedParams): boolean;
|
|
41
42
|
getLockRecordEntry(id: string): IRecordLockingRecord | undefined;
|
|
42
43
|
fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult>;
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { EntryTableItem } from \"@webiny/app-headless-cms/types\";\nimport { GenericRecord } from \"@webiny/app/types\";\nimport { IRecordLockingUnlockEntryResult } from \"~/domain/abstractions/IRecordLockingUnlockEntry\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nexport interface IRecordLockingIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface IRecordLockingRecordLocked {\n lockedBy: IRecordLockingIdentity;\n lockedOn: string;\n expiresOn: string;\n actions: IRecordLockingLockRecordAction[];\n}\n\nexport interface IPossiblyRecordLockingRecord extends EntryTableItem {\n $lockingType?: string;\n entryId: string;\n $locked?: IRecordLockingRecordLocked | null;\n}\n\nexport interface IRecordLockingRecord extends IPossiblyRecordLockingRecord {\n entryId: string;\n $lockingType: string;\n}\n\nexport type IIsRecordLockedParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUpdateEntryLockParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUnlockEntryParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockedEntryLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport interface IFetchLockRecordResult {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n}\n\nexport interface IRecordLockingContext<\n T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord\n> {\n readonly loading: boolean;\n readonly records: IPossiblyRecordLockingRecord[];\n readonly error?: IRecordLockingError | null;\n setRecords(folderId: string, type: string, records: T[]): Promise<void>;\n updateEntryLock(params: IUpdateEntryLockParams): Promise<
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { EntryTableItem } from \"@webiny/app-headless-cms/types\";\nimport { GenericRecord } from \"@webiny/app/types\";\nimport { IRecordLockingUnlockEntryResult } from \"~/domain/abstractions/IRecordLockingUnlockEntry\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport type { IRecordLockingUpdateEntryLockResult } from \"~/domain/abstractions/IRecordLocking.js\";\n\nexport interface IRecordLockingIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface IRecordLockingRecordLocked {\n lockedBy: IRecordLockingIdentity;\n lockedOn: string;\n expiresOn: string;\n actions: IRecordLockingLockRecordAction[];\n}\n\nexport interface IPossiblyRecordLockingRecord extends EntryTableItem {\n $lockingType?: string;\n entryId: string;\n $locked?: IRecordLockingRecordLocked | null;\n}\n\nexport interface IRecordLockingRecord extends IPossiblyRecordLockingRecord {\n entryId: string;\n $lockingType: string;\n}\n\nexport type IIsRecordLockedParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUpdateEntryLockParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUnlockEntryParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockedEntryLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport interface IFetchLockRecordResult {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n}\n\nexport interface IRecordLockingContext<\n T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord\n> {\n readonly loading: boolean;\n readonly records: IPossiblyRecordLockingRecord[];\n readonly error?: IRecordLockingError | null;\n setRecords(folderId: string, type: string, records: T[]): Promise<void>;\n updateEntryLock(params: IUpdateEntryLockParams): Promise<IRecordLockingUpdateEntryLockResult>;\n isRecordLocked(params?: IIsRecordLockedParams): boolean;\n getLockRecordEntry(id: string): IRecordLockingRecord | undefined;\n fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult>;\n fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null>;\n unlockEntry(params: IUnlockEntryParams): Promise<IRecordLockingUnlockEntryResult>;\n removeEntryLock(params: IUnlockEntryParams): void;\n unlockEntryForce(params: IUnlockEntryParams): Promise<IRecordLockingUnlockEntryResult>;\n isLockExpired(input: Date | string): boolean;\n}\n\nexport interface IRecordLockingLockRecordAction {\n type: string;\n message: string;\n createdBy: IRecordLockingIdentity;\n createdOn: string;\n}\n\nexport interface IRecordLockingLockRecord {\n id: string;\n lockedOn: string;\n expiresOn: string;\n lockedBy: IRecordLockingIdentity;\n targetId: string;\n type: string;\n actions: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingMeta {\n totalCount: number;\n cursor: string | null;\n hasMoreItems: boolean;\n}\n\nexport interface IRecordLockingError<T = GenericRecord> {\n message: string;\n code: string;\n data?: T;\n}\n\nexport interface RecordLockingSecurityPermission extends SecurityPermission {\n canForceUnlock?: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { IRecordLockingUnlockEntryRequest, IRecordLockingUnlockEntryRequestParams, IRecordLockingUnlockEntryRequestResult } from "./abstractions/IRecordLockingUnlockEntryRequest";
|
|
2
|
-
import { IRecordLockingClient } from "./abstractions/IRecordLockingClient";
|
|
3
|
-
interface Params {
|
|
4
|
-
client: IRecordLockingClient;
|
|
5
|
-
}
|
|
6
|
-
export declare class RecordLockingUnlockEntryRequest implements IRecordLockingUnlockEntryRequest {
|
|
7
|
-
private readonly client;
|
|
8
|
-
constructor(params: Params);
|
|
9
|
-
execute(params: IRecordLockingUnlockEntryRequestParams): Promise<IRecordLockingUnlockEntryRequestResult>;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.RecordLockingUnlockEntryRequest = void 0;
|
|
8
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
-
var _error = require("@webiny/error");
|
|
11
|
-
var RecordLockingUnlockEntryRequest = exports.RecordLockingUnlockEntryRequest = /*#__PURE__*/function () {
|
|
12
|
-
// @eslint-disable-next-line
|
|
13
|
-
|
|
14
|
-
function RecordLockingUnlockEntryRequest(params) {
|
|
15
|
-
(0, _classCallCheck2.default)(this, RecordLockingUnlockEntryRequest);
|
|
16
|
-
this.client = params.client;
|
|
17
|
-
}
|
|
18
|
-
return (0, _createClass2.default)(RecordLockingUnlockEntryRequest, [{
|
|
19
|
-
key: "execute",
|
|
20
|
-
value: async function execute(
|
|
21
|
-
// eslint-disable-next-line
|
|
22
|
-
params) {
|
|
23
|
-
throw new _error.WebinyError("Method not implemented.");
|
|
24
|
-
}
|
|
25
|
-
}]);
|
|
26
|
-
}();
|
|
27
|
-
|
|
28
|
-
//# sourceMappingURL=RecordLockingUnlockEntryRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_error","require","RecordLockingUnlockEntryRequest","exports","params","_classCallCheck2","default","client","_createClass2","key","value","execute","WebinyError"],"sources":["RecordLockingUnlockEntryRequest.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport {\n IRecordLockingUnlockEntryRequest,\n IRecordLockingUnlockEntryRequestParams,\n IRecordLockingUnlockEntryRequestResult\n} from \"~/domain/abstractions/IRecordLockingUnlockEntryRequest\";\nimport { IRecordLockingClient } from \"./abstractions/IRecordLockingClient\";\n\ninterface Params {\n client: IRecordLockingClient;\n}\n\nexport class RecordLockingUnlockEntryRequest implements IRecordLockingUnlockEntryRequest {\n // @eslint-disable-next-line\n private readonly client: IRecordLockingClient;\n\n public constructor(params: Params) {\n this.client = params.client;\n }\n public async execute(\n // eslint-disable-next-line\n params: IRecordLockingUnlockEntryRequestParams\n ): Promise<IRecordLockingUnlockEntryRequestResult> {\n throw new WebinyError(\"Method not implemented.\");\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAA4C,IAY/BC,+BAA+B,GAAAC,OAAA,CAAAD,+BAAA;EACxC;;EAGA,SAAAA,gCAAmBE,MAAc,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,+BAAA;IAC/B,IAAI,CAACK,MAAM,GAAGH,MAAM,CAACG,MAAM;EAC/B;EAAC,WAAAC,aAAA,CAAAF,OAAA,EAAAJ,+BAAA;IAAAO,GAAA;IAAAC,KAAA,EACD,eAAaC,OAAOA;IAChB;IACAP,MAA8C,EACC;MAC/C,MAAM,IAAIQ,kBAAW,CAAC,yBAAyB,CAAC;IACpD;EAAC;AAAA","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { IRecordLockingError, IRecordLockingLockRecord } from "../../types";
|
|
2
|
-
export interface IRecordLockingUnlockEntryRequestParams {
|
|
3
|
-
id: string;
|
|
4
|
-
type: string;
|
|
5
|
-
}
|
|
6
|
-
export interface IRecordLockingUnlockEntryRequestResult {
|
|
7
|
-
data: IRecordLockingLockRecord | null;
|
|
8
|
-
error: IRecordLockingError | null;
|
|
9
|
-
}
|
|
10
|
-
export interface IRecordLockingUnlockEntryRequest {
|
|
11
|
-
execute(params: IRecordLockingUnlockEntryRequestParams): Promise<IRecordLockingUnlockEntryRequestResult>;
|
|
12
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IRecordLockingUnlockEntryRequest.ts"],"sourcesContent":["import { IRecordLockingError, IRecordLockingLockRecord } from \"~/types\";\n\nexport interface IRecordLockingUnlockEntryRequestParams {\n id: string;\n type: string;\n}\n\nexport interface IRecordLockingUnlockEntryRequestResult {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n}\n\nexport interface IRecordLockingUnlockEntryRequest {\n execute(\n params: IRecordLockingUnlockEntryRequestParams\n ): Promise<IRecordLockingUnlockEntryRequestResult>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { IRecordLockingError, IRecordLockingLockRecord } from "../../types";
|
|
2
|
-
import { IRecordLockingUnlockEntryRequestParams } from "../abstractions/IRecordLockingUnlockEntryRequest";
|
|
3
|
-
export type IRecordLockingUnlockEntryRequestVariables = IRecordLockingUnlockEntryRequestParams;
|
|
4
|
-
export interface IRecordLockingUnlockEntryRequestResponse {
|
|
5
|
-
recordLocking: {
|
|
6
|
-
unlockEntryRequest: {
|
|
7
|
-
data: IRecordLockingLockRecord | null;
|
|
8
|
-
error: IRecordLockingError | null;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export declare const createUnlockEntryRequestGraphQL: () => import("graphql").DocumentNode;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createUnlockEntryRequestGraphQL = void 0;
|
|
8
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
-
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
10
|
-
var _fields = require("./fields");
|
|
11
|
-
var _templateObject;
|
|
12
|
-
var createUnlockEntryRequestGraphQL = exports.createUnlockEntryRequestGraphQL = function createUnlockEntryRequestGraphQL() {
|
|
13
|
-
return (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n mutation RecordLockingUnlockEntryRequest($id: ID!, $type: String!) {\n recordLocking {\n unlockEntryRequest(id: $id, type: $type) {\n data {\n ", "\n }\n error {\n ", "\n }\n }\n }\n }\n "])), _fields.LOCK_RECORD_FIELDS, _fields.ERROR_FIELDS);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=unlockEntryRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_fields","_templateObject","createUnlockEntryRequestGraphQL","exports","gql","_taggedTemplateLiteral2","default","LOCK_RECORD_FIELDS","ERROR_FIELDS"],"sources":["unlockEntryRequest.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport { ERROR_FIELDS, LOCK_RECORD_FIELDS } from \"./fields\";\nimport { IRecordLockingError, IRecordLockingLockRecord } from \"~/types\";\nimport { IRecordLockingUnlockEntryRequestParams } from \"../abstractions/IRecordLockingUnlockEntryRequest\";\n\nexport type IRecordLockingUnlockEntryRequestVariables = IRecordLockingUnlockEntryRequestParams;\n\nexport interface IRecordLockingUnlockEntryRequestResponse {\n recordLocking: {\n unlockEntryRequest: {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n };\n };\n}\n\nexport const createUnlockEntryRequestGraphQL = () => {\n return gql`\n mutation RecordLockingUnlockEntryRequest($id: ID!, $type: String!) {\n recordLocking {\n unlockEntryRequest(id: $id, type: $type) {\n data {\n ${LOCK_RECORD_FIELDS}\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n `;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAA4D,IAAAE,eAAA;AAerD,IAAMC,+BAA+B,GAAAC,OAAA,CAAAD,+BAAA,GAAG,SAAlCA,+BAA+BA,CAAA,EAAS;EACjD,WAAOE,mBAAG,EAAAH,eAAA,KAAAA,eAAA,OAAAI,uBAAA,CAAAC,OAAA,uYAKYC,0BAAkB,EAGlBC,oBAAY;AAMtC,CAAC","ignoreList":[]}
|