@webiny/api-apw 5.25.0 → 5.30.0
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/ContentApwSettingsPlugin.d.ts +10 -0
- package/ContentApwSettingsPlugin.js +17 -0
- package/ContentApwSettingsPlugin.js.map +1 -0
- package/README.md +7 -6
- package/{createApw → crud}/createChangeRequestMethods.d.ts +0 -0
- package/{createApw → crud}/createChangeRequestMethods.js +0 -0
- package/crud/createChangeRequestMethods.js.map +1 -0
- package/{createApw → crud}/createCommentMethods.d.ts +0 -0
- package/{createApw → crud}/createCommentMethods.js +0 -0
- package/crud/createCommentMethods.js.map +1 -0
- package/crud/createContentReviewMethods.d.ts +10 -0
- package/{createApw → crud}/createContentReviewMethods.js +269 -19
- package/crud/createContentReviewMethods.js.map +1 -0
- package/{createApw → crud}/createReviewerMethods.d.ts +0 -0
- package/{createApw → crud}/createReviewerMethods.js +0 -0
- package/crud/createReviewerMethods.js.map +1 -0
- package/{createApw → crud}/createWorkflowMethods.d.ts +0 -0
- package/{createApw → crud}/createWorkflowMethods.js +0 -0
- package/crud/createWorkflowMethods.js.map +1 -0
- package/{createApw → crud}/index.d.ts +0 -0
- package/{createApw → crud}/index.js +55 -11
- package/crud/index.js.map +1 -0
- package/crud/utils.d.ts +21 -0
- package/crud/utils.js +142 -0
- package/crud/utils.js.map +1 -0
- package/index.d.ts +4 -2
- package/index.js +11 -5
- package/index.js.map +1 -1
- package/package.json +37 -30
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.d.ts +10 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +51 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/cms/README.md +49 -0
- package/plugins/cms/apwEntryPlugins.d.ts +8 -0
- package/plugins/cms/apwEntryPlugins.js +50 -0
- package/plugins/cms/apwEntryPlugins.js.map +1 -0
- package/plugins/cms/index.d.ts +12 -0
- package/plugins/cms/index.js +37 -0
- package/plugins/cms/index.js.map +1 -0
- package/plugins/cms/linkContentReviewToEntry.d.ts +8 -0
- package/plugins/cms/linkContentReviewToEntry.js +108 -0
- package/plugins/cms/linkContentReviewToEntry.js.map +1 -0
- package/plugins/cms/linkWorkflowToEntry.d.ts +8 -0
- package/plugins/cms/linkWorkflowToEntry.js +166 -0
- package/plugins/cms/linkWorkflowToEntry.js.map +1 -0
- package/plugins/cms/triggerContentReview.d.ts +8 -0
- package/plugins/cms/triggerContentReview.js +59 -0
- package/plugins/cms/triggerContentReview.js.map +1 -0
- package/plugins/cms/updateContentReviewStatus.d.ts +10 -0
- package/plugins/cms/updateContentReviewStatus.js +101 -0
- package/plugins/cms/updateContentReviewStatus.js.map +1 -0
- package/plugins/cms/utils.d.ts +27 -0
- package/plugins/cms/utils.js +211 -0
- package/plugins/cms/utils.js.map +1 -0
- package/plugins/context.d.ts +3 -2
- package/plugins/context.js +82 -49
- package/plugins/context.js.map +1 -1
- package/plugins/graphql/changeRequest.gql.js +1 -1
- package/plugins/graphql/changeRequest.gql.js.map +1 -1
- package/plugins/graphql/comment.gql.js +8 -17
- package/plugins/graphql/comment.gql.js.map +1 -1
- package/plugins/graphql/contentReview.gql.js +168 -13
- package/plugins/graphql/contentReview.gql.js.map +1 -1
- package/plugins/graphql/reviewer.gql.js +1 -1
- package/plugins/graphql/reviewer.gql.js.map +1 -1
- package/plugins/graphql/workflow.gql.js +18 -15
- package/plugins/graphql/workflow.gql.js.map +1 -1
- package/plugins/graphql.d.ts +3 -2
- package/plugins/graphql.js +11 -1
- package/plugins/graphql.js.map +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js +18 -0
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +8 -8
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +6 -6
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
- package/plugins/hooks/index.d.ts +1 -2
- package/plugins/hooks/index.js +25 -25
- package/plugins/hooks/index.js.map +1 -1
- package/plugins/hooks/initializeContentReviewSteps.d.ts +2 -7
- package/plugins/hooks/initializeContentReviewSteps.js +42 -24
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +27 -39
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
- package/plugins/hooks/updateTotalComments.d.ts +3 -0
- package/plugins/hooks/updateTotalComments.js +157 -0
- package/plugins/hooks/updateTotalComments.js.map +1 -0
- package/plugins/hooks/validateChangeRequest.d.ts +2 -0
- package/plugins/hooks/validateChangeRequest.js +64 -0
- package/plugins/hooks/validateChangeRequest.js.map +1 -0
- package/plugins/hooks/validateComment.d.ts +2 -0
- package/plugins/hooks/validateComment.js +45 -0
- package/plugins/hooks/validateComment.js.map +1 -0
- package/plugins/hooks/validateContentReview.d.ts +2 -0
- package/plugins/hooks/validateContentReview.js +38 -0
- package/plugins/hooks/validateContentReview.js.map +1 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.d.ts +9 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +51 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/pageBuilder/apwContentPagePlugins.d.ts +3 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js +30 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -0
- package/plugins/{hooks/extendPbPageSchema.d.ts → pageBuilder/extendPbPageSettingsSchema.d.ts} +1 -2
- package/plugins/{hooks/extendPbPageSchema.js → pageBuilder/extendPbPageSettingsSchema.js} +4 -3
- package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -0
- package/plugins/pageBuilder/index.d.ts +11 -0
- package/plugins/pageBuilder/index.js +45 -0
- package/plugins/pageBuilder/index.js.map +1 -0
- package/plugins/pageBuilder/linkContentReviewToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js +93 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -0
- package/plugins/pageBuilder/linkWorkflowToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js +182 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -0
- package/plugins/pageBuilder/triggerContentReview.d.ts +8 -0
- package/plugins/pageBuilder/triggerContentReview.js +50 -0
- package/plugins/pageBuilder/triggerContentReview.js.map +1 -0
- package/plugins/pageBuilder/updateContentReviewStatus.d.ts +10 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js +83 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -0
- package/plugins/pageBuilder/utils.d.ts +22 -0
- package/plugins/pageBuilder/utils.js +184 -0
- package/plugins/pageBuilder/utils.js.map +1 -0
- package/plugins/utils.d.ts +22 -2
- package/plugins/utils.js +128 -2
- package/plugins/utils.js.map +1 -1
- package/scheduler/createScheduleActionMethods.d.ts +2 -0
- package/scheduler/createScheduleActionMethods.js +146 -0
- package/scheduler/createScheduleActionMethods.js.map +1 -0
- package/scheduler/handlers/executeAction/index.d.ts +16 -0
- package/scheduler/handlers/executeAction/index.js +148 -0
- package/scheduler/handlers/executeAction/index.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +13 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +17 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +126 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +163 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/security.d.ts +4 -0
- package/scheduler/handlers/executeAction/security.js +68 -0
- package/scheduler/handlers/executeAction/security.js.map +1 -0
- package/scheduler/handlers/scheduleAction/index.d.ts +22 -0
- package/scheduler/handlers/scheduleAction/index.js +162 -0
- package/scheduler/handlers/scheduleAction/index.js.map +1 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.d.ts +24 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +176 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -0
- package/scheduler/handlers/utils.d.ts +33 -0
- package/scheduler/handlers/utils.js +168 -0
- package/scheduler/handlers/utils.js.map +1 -0
- package/scheduler/index.d.ts +2 -0
- package/scheduler/index.js +27 -0
- package/scheduler/index.js.map +1 -0
- package/scheduler/types.d.ts +171 -0
- package/scheduler/types.js +34 -0
- package/scheduler/types.js.map +1 -0
- package/storageOperations/changeRequestStorageOperations.js +1 -3
- package/storageOperations/changeRequestStorageOperations.js.map +1 -1
- package/storageOperations/commentStorageOperations.js +25 -11
- package/storageOperations/commentStorageOperations.js.map +1 -1
- package/storageOperations/contentReviewStorageOperations.js +1 -3
- package/storageOperations/contentReviewStorageOperations.js.map +1 -1
- package/storageOperations/index.js.map +1 -1
- package/storageOperations/models/changeRequest.model.d.ts +1 -0
- package/storageOperations/models/changeRequest.model.js +10 -5
- package/storageOperations/models/changeRequest.model.js.map +1 -1
- package/storageOperations/models/comment.model.d.ts +1 -0
- package/storageOperations/models/comment.model.js +24 -3
- package/storageOperations/models/comment.model.js.map +1 -1
- package/storageOperations/models/contentModelPluginFactory.d.ts +2 -2
- package/storageOperations/models/contentModelPluginFactory.js +2 -2
- package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
- package/storageOperations/models/contentReview.model.d.ts +1 -0
- package/storageOperations/models/contentReview.model.js +98 -26
- package/storageOperations/models/contentReview.model.js.map +1 -1
- package/storageOperations/models/index.js +25 -5
- package/storageOperations/models/index.js.map +1 -1
- package/storageOperations/models/reviewer.model.d.ts +1 -0
- package/storageOperations/models/reviewer.model.js +11 -6
- package/storageOperations/models/reviewer.model.js.map +1 -1
- package/storageOperations/models/utils.js.map +1 -1
- package/storageOperations/models/workflow.model.d.ts +2 -1
- package/storageOperations/models/workflow.model.js +32 -30
- package/storageOperations/models/workflow.model.js.map +1 -1
- package/storageOperations/reviewerStorageOperations.js +1 -3
- package/storageOperations/reviewerStorageOperations.js.map +1 -1
- package/storageOperations/types.js.map +1 -1
- package/storageOperations/workflowStorageOperations.js +21 -7
- package/storageOperations/workflowStorageOperations.js.map +1 -1
- package/types.d.ts +138 -49
- package/types.js +9 -3
- package/types.js.map +1 -1
- package/utils/contentApwSettingsPlugin.d.ts +9 -0
- package/utils/contentApwSettingsPlugin.js +26 -0
- package/utils/contentApwSettingsPlugin.js.map +1 -0
- package/utils/errors.js.map +1 -1
- package/utils/fieldResolver.js +2 -2
- package/utils/fieldResolver.js.map +1 -1
- package/utils/resolve.js.map +1 -1
- package/createApw/createChangeRequestMethods.js.map +0 -1
- package/createApw/createCommentMethods.js.map +0 -1
- package/createApw/createContentReviewMethods.d.ts +0 -6
- package/createApw/createContentReviewMethods.js.map +0 -1
- package/createApw/createReviewerMethods.js.map +0 -1
- package/createApw/createWorkflowMethods.js.map +0 -1
- package/createApw/index.js.map +0 -1
- package/plugins/createManageCMSPlugin.d.ts +0 -2
- package/plugins/createManageCMSPlugin.js +0 -31
- package/plugins/createManageCMSPlugin.js.map +0 -1
- package/plugins/hooks/extendPbPageSchema.js.map +0 -1
- package/plugins/hooks/linkWorkflowToPage.d.ts +0 -9
- package/plugins/hooks/linkWorkflowToPage.js +0 -155
- package/plugins/hooks/linkWorkflowToPage.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["deleteChangeRequestsWithContentReview","apw","contentReview","onAfterContentReviewDelete","subscribe","steps","i","length","id","stepId","meta","totalCount","changeRequests","changeRequest","list","where","step","e","message","console","log","delete"],"sources":["deleteChangeRequestsAfterContentReview.ts"],"sourcesContent":["import { ApwChangeRequest, LifeCycleHookCallbackParams, ListMeta } from \"~/types\";\n\nexport const deleteChangeRequestsWithContentReview = ({\n apw\n}: Pick<LifeCycleHookCallbackParams, \"apw\">) => {\n apw.contentReview.onAfterContentReviewDelete.subscribe(async ({ contentReview }) => {\n /**\n * Also delete all associated \"changeRequest\" when a \"contentReview\" is deleted.\n */\n const steps = contentReview.steps;\n /**\n * For each step get associated change requests and delete them.\n */\n for (let i = 0; i < steps.length; i++) {\n const { id: stepId } = steps[i];\n\n let meta: Pick<ListMeta, \"totalCount\"> = {\n totalCount: 1\n };\n /**\n * Paginate through change requests.\n */\n while (meta.totalCount > 0) {\n let changeRequests: ApwChangeRequest[] = [];\n /**\n * Get all change requests.\n */\n try {\n [changeRequests, meta] = await apw.changeRequest.list({\n where: {\n step: `${contentReview.id}#${stepId}`\n }\n });\n } catch (e) {\n meta.totalCount = 0;\n if (e.message !== \"index_not_found_exception\") {\n throw e;\n }\n console.log(e);\n }\n\n /**\n * Delete change requests one by one.\n */\n for (const changeRequest of changeRequests) {\n await apw.changeRequest.delete(changeRequest.id);\n }\n }\n }\n });\n};\n"],"mappings":";;;;;;;AAEO,MAAMA,qCAAqC,GAAG,CAAC;EAClDC;AADkD,CAAD,KAEL;EAC5CA,GAAG,CAACC,aAAJ,CAAkBC,0BAAlB,CAA6CC,SAA7C,CAAuD,OAAO;IAAEF;EAAF,CAAP,KAA6B;IAChF;AACR;AACA;IACQ,MAAMG,KAAK,GAAGH,aAAa,CAACG,KAA5B;IACA;AACR;AACA;;IACQ,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,KAAK,CAACE,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;MACnC,MAAM;QAAEE,EAAE,EAAEC;MAAN,IAAiBJ,KAAK,CAACC,CAAD,CAA5B;MAEA,IAAII,IAAkC,GAAG;QACrCC,UAAU,EAAE;MADyB,CAAzC;MAGA;AACZ;AACA;;MACY,OAAOD,IAAI,CAACC,UAAL,GAAkB,CAAzB,EAA4B;QACxB,IAAIC,cAAkC,GAAG,EAAzC;QACA;AAChB;AACA;;QACgB,IAAI;UACA,CAACA,cAAD,EAAiBF,IAAjB,IAAyB,MAAMT,GAAG,CAACY,aAAJ,CAAkBC,IAAlB,CAAuB;YAClDC,KAAK,EAAE;cACHC,IAAI,EAAG,GAAEd,aAAa,CAACM,EAAG,IAAGC,MAAO;YADjC;UAD2C,CAAvB,CAA/B;QAKH,CAND,CAME,OAAOQ,CAAP,EAAU;UACRP,IAAI,CAACC,UAAL,GAAkB,CAAlB;;UACA,IAAIM,CAAC,CAACC,OAAF,KAAc,2BAAlB,EAA+C;YAC3C,MAAMD,CAAN;UACH;;UACDE,OAAO,CAACC,GAAR,CAAYH,CAAZ;QACH;QAED;AAChB;AACA;;;QACgB,KAAK,MAAMJ,aAAX,IAA4BD,cAA5B,EAA4C;UACxC,MAAMX,GAAG,CAACY,aAAJ,CAAkBQ,MAAlB,CAAyBR,aAAa,CAACL,EAAvC,CAAN;QACH;MACJ;IACJ;EACJ,CA5CD;AA6CH,CAhDM"}
|
@@ -15,14 +15,13 @@ const deleteCommentsAfterChangeRequest = ({
|
|
15
15
|
* Also delete all associated comments with "changeRequest".
|
16
16
|
*/
|
17
17
|
let meta = {
|
18
|
-
|
19
|
-
cursor: null
|
18
|
+
totalCount: 1
|
20
19
|
};
|
21
20
|
/**
|
22
21
|
* Paginate through comments.
|
23
22
|
*/
|
24
23
|
|
25
|
-
while (meta.
|
24
|
+
while (meta.totalCount > 0) {
|
26
25
|
let comments = [];
|
27
26
|
/**
|
28
27
|
* Get all comments.
|
@@ -34,15 +33,16 @@ const deleteCommentsAfterChangeRequest = ({
|
|
34
33
|
changeRequest: {
|
35
34
|
id: changeRequest.id
|
36
35
|
}
|
37
|
-
}
|
38
|
-
after: meta.cursor || null
|
36
|
+
}
|
39
37
|
});
|
40
38
|
} catch (e) {
|
41
|
-
meta.
|
39
|
+
meta.totalCount = 0;
|
42
40
|
|
43
41
|
if (e.message !== "index_not_found_exception") {
|
44
42
|
throw e;
|
45
43
|
}
|
44
|
+
|
45
|
+
console.log(e);
|
46
46
|
}
|
47
47
|
/**
|
48
48
|
* Delete comments one by one.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["deleteCommentsAfterChangeRequest","apw","changeRequest","onAfterChangeRequestDelete","subscribe","meta","totalCount","comments","comment","list","where","id","e","message","console","log","delete"],"sources":["deleteCommentsAfterChangeRequest.ts"],"sourcesContent":["import { ApwComment, LifeCycleHookCallbackParams, ListMeta } from \"~/types\";\n\nexport const deleteCommentsAfterChangeRequest = ({\n apw\n}: Pick<LifeCycleHookCallbackParams, \"apw\">) => {\n apw.changeRequest.onAfterChangeRequestDelete.subscribe(async ({ changeRequest }) => {\n /**\n * Also delete all associated comments with \"changeRequest\".\n */\n let meta: Pick<ListMeta, \"totalCount\"> = {\n totalCount: 1\n };\n /**\n * Paginate through comments.\n */\n while (meta.totalCount > 0) {\n let comments: ApwComment[] = [];\n /**\n * Get all comments.\n */\n try {\n [comments, meta] = await apw.comment.list({\n where: {\n changeRequest: {\n id: changeRequest.id\n }\n }\n });\n } catch (e) {\n meta.totalCount = 0;\n if (e.message !== \"index_not_found_exception\") {\n throw e;\n }\n console.log(e);\n }\n\n /**\n * Delete comments one by one.\n */\n for (const comment of comments) {\n await apw.comment.delete(comment.id);\n }\n }\n });\n};\n"],"mappings":";;;;;;;AAEO,MAAMA,gCAAgC,GAAG,CAAC;EAC7CC;AAD6C,CAAD,KAEA;EAC5CA,GAAG,CAACC,aAAJ,CAAkBC,0BAAlB,CAA6CC,SAA7C,CAAuD,OAAO;IAAEF;EAAF,CAAP,KAA6B;IAChF;AACR;AACA;IACQ,IAAIG,IAAkC,GAAG;MACrCC,UAAU,EAAE;IADyB,CAAzC;IAGA;AACR;AACA;;IACQ,OAAOD,IAAI,CAACC,UAAL,GAAkB,CAAzB,EAA4B;MACxB,IAAIC,QAAsB,GAAG,EAA7B;MACA;AACZ;AACA;;MACY,IAAI;QACA,CAACA,QAAD,EAAWF,IAAX,IAAmB,MAAMJ,GAAG,CAACO,OAAJ,CAAYC,IAAZ,CAAiB;UACtCC,KAAK,EAAE;YACHR,aAAa,EAAE;cACXS,EAAE,EAAET,aAAa,CAACS;YADP;UADZ;QAD+B,CAAjB,CAAzB;MAOH,CARD,CAQE,OAAOC,CAAP,EAAU;QACRP,IAAI,CAACC,UAAL,GAAkB,CAAlB;;QACA,IAAIM,CAAC,CAACC,OAAF,KAAc,2BAAlB,EAA+C;UAC3C,MAAMD,CAAN;QACH;;QACDE,OAAO,CAACC,GAAR,CAAYH,CAAZ;MACH;MAED;AACZ;AACA;;;MACY,KAAK,MAAMJ,OAAX,IAAsBD,QAAtB,EAAgC;QAC5B,MAAMN,GAAG,CAACO,OAAJ,CAAYQ,MAAZ,CAAmBR,OAAO,CAACG,EAA3B,CAAN;MACH;IACJ;EACJ,CAtCD;AAuCH,CA1CM"}
|
package/plugins/hooks/index.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
1
|
import { ContextPlugin } from "@webiny/handler/plugins/ContextPlugin";
|
2
2
|
import { ApwContext } from "../../types";
|
3
|
-
declare const
|
4
|
-
export default _default;
|
3
|
+
export declare const attachApwHooks: () => ContextPlugin<ApwContext>;
|
package/plugins/hooks/index.js
CHANGED
@@ -1,20 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
6
4
|
value: true
|
7
5
|
});
|
8
|
-
exports.
|
9
|
-
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
6
|
+
exports.attachApwHooks = void 0;
|
11
7
|
|
12
8
|
var _ContextPlugin = require("@webiny/handler/plugins/ContextPlugin");
|
13
9
|
|
14
|
-
var _extendPbPageSchema = _interopRequireDefault(require("./extendPbPageSchema"));
|
15
|
-
|
16
|
-
var _linkWorkflowToPage = require("./linkWorkflowToPage");
|
17
|
-
|
18
10
|
var _deleteCommentsAfterChangeRequest = require("./deleteCommentsAfterChangeRequest");
|
19
11
|
|
20
12
|
var _deleteChangeRequestsAfterContentReview = require("./deleteChangeRequestsAfterContentReview");
|
@@ -25,36 +17,44 @@ var _initializeContentReviewSteps = require("./initializeContentReviewSteps");
|
|
25
17
|
|
26
18
|
var _updatePendingChangeRequests = require("./updatePendingChangeRequests");
|
27
19
|
|
28
|
-
|
20
|
+
var _updateTotalComments = require("./updateTotalComments");
|
21
|
+
|
22
|
+
var _validateChangeRequest = require("./validateChangeRequest");
|
29
23
|
|
30
|
-
|
24
|
+
var _validateContentReview = require("./validateContentReview");
|
31
25
|
|
32
|
-
var
|
26
|
+
var _validateComment = require("./validateComment");
|
27
|
+
|
28
|
+
const attachApwHooks = () =>
|
33
29
|
/**
|
34
30
|
* Hook into CMS events and execute business logic.
|
35
31
|
*/
|
36
32
|
new _ContextPlugin.ContextPlugin(async context => {
|
37
33
|
const {
|
38
34
|
security,
|
39
|
-
apw
|
40
|
-
pageBuilder
|
35
|
+
apw
|
41
36
|
} = context;
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
37
|
+
(0, _validateContentReview.validateContentReview)({
|
38
|
+
apw
|
39
|
+
});
|
40
|
+
(0, _validateChangeRequest.validateChangeRequest)({
|
41
|
+
apw
|
42
|
+
});
|
43
|
+
(0, _validateComment.validateComment)({
|
44
|
+
apw
|
45
|
+
});
|
47
46
|
(0, _createReviewerFromIdentity.createReviewerFromIdentity)({
|
48
47
|
security,
|
49
48
|
apw
|
50
49
|
});
|
51
|
-
(0,
|
50
|
+
(0, _initializeContentReviewSteps.initializeContentReviewSteps)(context);
|
51
|
+
(0, _updatePendingChangeRequests.updatePendingChangeRequestsCount)({
|
52
52
|
apw
|
53
|
-
}
|
54
|
-
(0,
|
53
|
+
});
|
54
|
+
(0, _updateTotalComments.updateTotalCommentsCount)({
|
55
55
|
apw
|
56
56
|
});
|
57
|
-
(0,
|
57
|
+
(0, _updateTotalComments.updateLatestCommentId)({
|
58
58
|
apw
|
59
59
|
});
|
60
60
|
(0, _deleteCommentsAfterChangeRequest.deleteCommentsAfterChangeRequest)({
|
@@ -63,6 +63,6 @@ new _ContextPlugin.ContextPlugin(async context => {
|
|
63
63
|
(0, _deleteChangeRequestsAfterContentReview.deleteChangeRequestsWithContentReview)({
|
64
64
|
apw
|
65
65
|
});
|
66
|
-
})
|
66
|
+
});
|
67
67
|
|
68
|
-
exports.
|
68
|
+
exports.attachApwHooks = attachApwHooks;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["attachApwHooks","ContextPlugin","context","security","apw","validateContentReview","validateChangeRequest","validateComment","createReviewerFromIdentity","initializeContentReviewSteps","updatePendingChangeRequestsCount","updateTotalCommentsCount","updateLatestCommentId","deleteCommentsAfterChangeRequest","deleteChangeRequestsWithContentReview"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\nimport { ApwContext } from \"~/types\";\nimport { deleteCommentsAfterChangeRequest } from \"./deleteCommentsAfterChangeRequest\";\nimport { deleteChangeRequestsWithContentReview } from \"./deleteChangeRequestsAfterContentReview\";\nimport { createReviewerFromIdentity } from \"./createReviewerFromIdentity\";\nimport { initializeContentReviewSteps } from \"./initializeContentReviewSteps\";\nimport { updatePendingChangeRequestsCount } from \"./updatePendingChangeRequests\";\nimport { updateTotalCommentsCount, updateLatestCommentId } from \"./updateTotalComments\";\nimport { validateChangeRequest } from \"./validateChangeRequest\";\nimport { validateContentReview } from \"./validateContentReview\";\nimport { validateComment } from \"./validateComment\";\n\nexport const attachApwHooks = () =>\n /**\n * Hook into CMS events and execute business logic.\n */\n new ContextPlugin<ApwContext>(async context => {\n const { security, apw } = context;\n\n validateContentReview({ apw });\n\n validateChangeRequest({ apw });\n\n validateComment({ apw });\n\n createReviewerFromIdentity({ security, apw });\n\n initializeContentReviewSteps(context);\n\n updatePendingChangeRequestsCount({ apw });\n\n updateTotalCommentsCount({ apw });\n\n updateLatestCommentId({ apw });\n\n deleteCommentsAfterChangeRequest({ apw });\n\n deleteChangeRequestsWithContentReview({ apw });\n });\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,cAAc,GAAG;AAC1B;AACJ;AACA;AACI,IAAIC,4BAAJ,CAA8B,MAAMC,OAAN,IAAiB;EAC3C,MAAM;IAAEC,QAAF;IAAYC;EAAZ,IAAoBF,OAA1B;EAEA,IAAAG,4CAAA,EAAsB;IAAED;EAAF,CAAtB;EAEA,IAAAE,4CAAA,EAAsB;IAAEF;EAAF,CAAtB;EAEA,IAAAG,gCAAA,EAAgB;IAAEH;EAAF,CAAhB;EAEA,IAAAI,sDAAA,EAA2B;IAAEL,QAAF;IAAYC;EAAZ,CAA3B;EAEA,IAAAK,0DAAA,EAA6BP,OAA7B;EAEA,IAAAQ,6DAAA,EAAiC;IAAEN;EAAF,CAAjC;EAEA,IAAAO,6CAAA,EAAyB;IAAEP;EAAF,CAAzB;EAEA,IAAAQ,0CAAA,EAAsB;IAAER;EAAF,CAAtB;EAEA,IAAAS,kEAAA,EAAiC;IAAET;EAAF,CAAjC;EAEA,IAAAU,6EAAA,EAAsC;IAAEV;EAAF,CAAtC;AACH,CAtBD,CAJG"}
|
@@ -1,7 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const
|
3
|
-
type: ApwContentTypes;
|
4
|
-
id: string;
|
5
|
-
settings: Record<string, any>;
|
6
|
-
}) => Promise<string | null>;
|
7
|
-
export declare const initializeContentReviewSteps: ({ apw }: Pick<LifeCycleHookCallbackParams, "apw">) => void;
|
1
|
+
import { ApwContext } from "../../types";
|
2
|
+
export declare const initializeContentReviewSteps: ({ apw, plugins }: ApwContext) => void;
|
@@ -5,49 +5,61 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
6
6
|
value: true
|
7
7
|
});
|
8
|
-
exports.initializeContentReviewSteps =
|
8
|
+
exports.initializeContentReviewSteps = void 0;
|
9
9
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
11
|
|
12
12
|
var _set = _interopRequireDefault(require("lodash/set"));
|
13
13
|
|
14
|
-
var _types = require("../../types");
|
15
|
-
|
16
14
|
var _utils = require("../utils");
|
17
15
|
|
18
16
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
19
17
|
|
18
|
+
var _contentApwSettingsPlugin = require("../../utils/contentApwSettingsPlugin");
|
19
|
+
|
20
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
21
21
|
|
22
22
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
23
23
|
|
24
|
-
const getWorkflowIdFromContent = async (apw, params) => {
|
25
|
-
switch (params.type) {
|
26
|
-
case _types.ApwContentTypes.PAGE:
|
27
|
-
const getWorkflowFromPage = apw.getWorkflowGetter(_types.ApwContentTypes.PAGE);
|
28
|
-
return getWorkflowFromPage(params.id, {});
|
29
|
-
|
30
|
-
case _types.ApwContentTypes.CMS_ENTRY:
|
31
|
-
const getWorkflowFromCmsEntry = apw.getWorkflowGetter(_types.ApwContentTypes.CMS_ENTRY);
|
32
|
-
return getWorkflowFromCmsEntry(params.id, params.settings);
|
33
|
-
|
34
|
-
default:
|
35
|
-
return null;
|
36
|
-
}
|
37
|
-
};
|
38
|
-
|
39
|
-
exports.getWorkflowIdFromContent = getWorkflowIdFromContent;
|
40
|
-
|
41
24
|
const initializeContentReviewSteps = ({
|
42
|
-
apw
|
25
|
+
apw,
|
26
|
+
plugins
|
43
27
|
}) => {
|
44
28
|
apw.contentReview.onBeforeContentReviewCreate.subscribe(async ({
|
45
29
|
input
|
46
30
|
}) => {
|
31
|
+
const {
|
32
|
+
type,
|
33
|
+
id,
|
34
|
+
settings
|
35
|
+
} = input.content;
|
36
|
+
/*
|
37
|
+
* Let's set "title" field value.
|
38
|
+
*/
|
39
|
+
|
40
|
+
const getContent = apw.getContentGetter(type);
|
41
|
+
const content = await getContent(id, settings);
|
42
|
+
|
43
|
+
if (!content) {
|
44
|
+
throw new _handlerGraphql.NotFoundError(`Content "${type}" with id ${id} not found.`);
|
45
|
+
}
|
46
|
+
|
47
|
+
const {
|
48
|
+
title
|
49
|
+
} = content;
|
50
|
+
input = (0, _set.default)(input, "title", title);
|
51
|
+
/**
|
52
|
+
* We need to find a plugin which can get a workflow ID for the given type of content.
|
53
|
+
*/
|
54
|
+
|
55
|
+
const contentApwSettingsPlugin = (0, _contentApwSettingsPlugin.getContentApwSettingsPlugin)({
|
56
|
+
plugins,
|
57
|
+
type
|
58
|
+
});
|
59
|
+
const workflowId = contentApwSettingsPlugin.getWorkflowId(content);
|
47
60
|
/**
|
48
61
|
* Let's initialize the "ContentReview" steps.
|
49
62
|
*/
|
50
|
-
const workflowId = await getWorkflowIdFromContent(apw, input.content);
|
51
63
|
|
52
64
|
if (!workflowId) {
|
53
65
|
throw new _handlerGraphql.NotFoundError(`Unable to initiate a "Content review". No workflow found!`);
|
@@ -55,15 +67,21 @@ const initializeContentReviewSteps = ({
|
|
55
67
|
|
56
68
|
const workflow = await apw.workflow.get(workflowId);
|
57
69
|
const workflowSteps = workflow.steps;
|
58
|
-
let previousStepStatus;
|
70
|
+
let previousStepStatus = undefined;
|
59
71
|
const updatedSteps = workflow.steps.map((step, index) => {
|
60
72
|
const status = (0, _utils.getContentReviewStepInitialStatus)(workflowSteps, index, previousStepStatus);
|
61
73
|
previousStepStatus = status;
|
62
74
|
return _objectSpread(_objectSpread({}, step), {}, {
|
63
75
|
status,
|
64
|
-
pendingChangeRequests: 0
|
76
|
+
pendingChangeRequests: 0,
|
77
|
+
totalComments: 0
|
65
78
|
});
|
66
79
|
});
|
80
|
+
/**
|
81
|
+
* TODO Figure our what does this actually do?
|
82
|
+
* There is no steps property on CreateApwContentReviewParams
|
83
|
+
*/
|
84
|
+
|
67
85
|
input = (0, _set.default)(input, "steps", updatedSteps);
|
68
86
|
});
|
69
87
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["initializeContentReviewSteps","apw","plugins","contentReview","onBeforeContentReviewCreate","subscribe","input","type","id","settings","content","getContent","getContentGetter","NotFoundError","title","lodashSet","contentApwSettingsPlugin","getContentApwSettingsPlugin","workflowId","getWorkflowId","workflow","get","workflowSteps","steps","previousStepStatus","undefined","updatedSteps","map","step","index","status","getContentReviewStepInitialStatus","pendingChangeRequests","totalComments"],"sources":["initializeContentReviewSteps.ts"],"sourcesContent":["import lodashSet from \"lodash/set\";\nimport { ApwContentReviewStepStatus, ApwContext } from \"~/types\";\nimport { getContentReviewStepInitialStatus } from \"~/plugins/utils\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\n\nexport const initializeContentReviewSteps = ({ apw, plugins }: ApwContext) => {\n apw.contentReview.onBeforeContentReviewCreate.subscribe(async ({ input }) => {\n const { type, id, settings } = input.content;\n /*\n * Let's set \"title\" field value.\n */\n const getContent = apw.getContentGetter(type);\n const content = await getContent(id, settings);\n if (!content) {\n throw new NotFoundError(`Content \"${type}\" with id ${id} not found.`);\n }\n\n const { title } = content;\n input = lodashSet(input, \"title\", title);\n\n /**\n * We need to find a plugin which can get a workflow ID for the given type of content.\n */\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type\n });\n\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n\n /**\n * Let's initialize the \"ContentReview\" steps.\n */\n if (!workflowId) {\n throw new NotFoundError(`Unable to initiate a \"Content review\". No workflow found!`);\n }\n\n const workflow = await apw.workflow.get(workflowId);\n const workflowSteps = workflow.steps;\n\n let previousStepStatus: ApwContentReviewStepStatus | undefined = undefined;\n const updatedSteps = workflow.steps.map((step, index) => {\n const status = getContentReviewStepInitialStatus(\n workflowSteps,\n index,\n previousStepStatus\n );\n previousStepStatus = status;\n return {\n ...step,\n status,\n pendingChangeRequests: 0,\n totalComments: 0\n };\n });\n /**\n * TODO Figure our what does this actually do?\n * There is no steps property on CreateApwContentReviewParams\n */\n input = lodashSet(input, \"steps\", updatedSteps);\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;;;;;AAEO,MAAMA,4BAA4B,GAAG,CAAC;EAAEC,GAAF;EAAOC;AAAP,CAAD,KAAkC;EAC1ED,GAAG,CAACE,aAAJ,CAAkBC,2BAAlB,CAA8CC,SAA9C,CAAwD,OAAO;IAAEC;EAAF,CAAP,KAAqB;IACzE,MAAM;MAAEC,IAAF;MAAQC,EAAR;MAAYC;IAAZ,IAAyBH,KAAK,CAACI,OAArC;IACA;AACR;AACA;;IACQ,MAAMC,UAAU,GAAGV,GAAG,CAACW,gBAAJ,CAAqBL,IAArB,CAAnB;IACA,MAAMG,OAAO,GAAG,MAAMC,UAAU,CAACH,EAAD,EAAKC,QAAL,CAAhC;;IACA,IAAI,CAACC,OAAL,EAAc;MACV,MAAM,IAAIG,6BAAJ,CAAmB,YAAWN,IAAK,aAAYC,EAAG,aAAlD,CAAN;IACH;;IAED,MAAM;MAAEM;IAAF,IAAYJ,OAAlB;IACAJ,KAAK,GAAG,IAAAS,YAAA,EAAUT,KAAV,EAAiB,OAAjB,EAA0BQ,KAA1B,CAAR;IAEA;AACR;AACA;;IACQ,MAAME,wBAAwB,GAAG,IAAAC,qDAAA,EAA4B;MACzDf,OADyD;MAEzDK;IAFyD,CAA5B,CAAjC;IAKA,MAAMW,UAAU,GAAGF,wBAAwB,CAACG,aAAzB,CAAuCT,OAAvC,CAAnB;IAEA;AACR;AACA;;IACQ,IAAI,CAACQ,UAAL,EAAiB;MACb,MAAM,IAAIL,6BAAJ,CAAmB,2DAAnB,CAAN;IACH;;IAED,MAAMO,QAAQ,GAAG,MAAMnB,GAAG,CAACmB,QAAJ,CAAaC,GAAb,CAAiBH,UAAjB,CAAvB;IACA,MAAMI,aAAa,GAAGF,QAAQ,CAACG,KAA/B;IAEA,IAAIC,kBAA0D,GAAGC,SAAjE;IACA,MAAMC,YAAY,GAAGN,QAAQ,CAACG,KAAT,CAAeI,GAAf,CAAmB,CAACC,IAAD,EAAOC,KAAP,KAAiB;MACrD,MAAMC,MAAM,GAAG,IAAAC,wCAAA,EACXT,aADW,EAEXO,KAFW,EAGXL,kBAHW,CAAf;MAKAA,kBAAkB,GAAGM,MAArB;MACA,uCACOF,IADP;QAEIE,MAFJ;QAGIE,qBAAqB,EAAE,CAH3B;QAIIC,aAAa,EAAE;MAJnB;IAMH,CAboB,CAArB;IAcA;AACR;AACA;AACA;;IACQ3B,KAAK,GAAG,IAAAS,YAAA,EAAUT,KAAV,EAAiB,OAAjB,EAA0BoB,YAA1B,CAAR;EACH,CAtDD;AAuDH,CAxDM"}
|
@@ -9,52 +9,31 @@ exports.updatePendingChangeRequestsCount = void 0;
|
|
9
9
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
11
|
|
12
|
+
var _utils = require("../utils");
|
13
|
+
|
12
14
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
13
15
|
|
14
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
15
17
|
|
16
18
|
const updatePendingChangeRequests = async ({
|
17
19
|
contentReviewMethods,
|
18
|
-
|
20
|
+
step,
|
19
21
|
delta
|
20
22
|
}) => {
|
21
23
|
const {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
try {
|
33
|
-
contentReviewEntry = await contentReviewMethods.get(revisionId);
|
34
|
-
} catch (e) {
|
35
|
-
if (e.message !== "index_not_found_exception" && e.code !== "NOT_FOUND") {
|
36
|
-
throw e;
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
if (!contentReviewEntry) {
|
41
|
-
return;
|
42
|
-
}
|
43
|
-
/**
|
44
|
-
* Update "pendingChangeRequests" count of corresponding step in content review entry.
|
45
|
-
*/
|
46
|
-
|
47
|
-
|
48
|
-
await contentReviewMethods.update(contentReviewEntry.id, {
|
49
|
-
steps: contentReviewEntry.steps.map(step => {
|
50
|
-
if (step.slug === slug) {
|
51
|
-
return _objectSpread(_objectSpread({}, step), {}, {
|
24
|
+
id,
|
25
|
+
stepId
|
26
|
+
} = (0, _utils.extractContentReviewIdAndStep)(step);
|
27
|
+
await (0, _utils.updateContentReview)({
|
28
|
+
contentReviewMethods,
|
29
|
+
id,
|
30
|
+
getNewContentReviewData: data => {
|
31
|
+
return _objectSpread(_objectSpread({}, data), {}, {
|
32
|
+
steps: (0, _utils.updateContentReviewStep)(data.steps, stepId, step => _objectSpread(_objectSpread({}, step), {}, {
|
52
33
|
pendingChangeRequests: step.pendingChangeRequests + delta
|
53
|
-
})
|
54
|
-
}
|
55
|
-
|
56
|
-
return step;
|
57
|
-
})
|
34
|
+
}))
|
35
|
+
});
|
36
|
+
}
|
58
37
|
});
|
59
38
|
};
|
60
39
|
|
@@ -64,13 +43,22 @@ const updatePendingChangeRequestsCount = ({
|
|
64
43
|
apw.changeRequest.onAfterChangeRequestDelete.subscribe(async ({
|
65
44
|
changeRequest
|
66
45
|
}) => {
|
46
|
+
/**
|
47
|
+
* If the deleted changeRequest was marked as resolved. We don't need to do anything here,
|
48
|
+
* because "pendingChangeRequests has been already updated in "onAfterChangeRequestUpdate" hook.
|
49
|
+
*/
|
50
|
+
if (changeRequest.resolved === true) {
|
51
|
+
return;
|
52
|
+
}
|
67
53
|
/**
|
68
54
|
* After a "changeRequest" is deleted, decrement the "pendingChangeRequests" count
|
69
55
|
* in the corresponding step of the content review entry.
|
70
56
|
*/
|
57
|
+
|
58
|
+
|
71
59
|
await updatePendingChangeRequests({
|
72
60
|
contentReviewMethods: apw.contentReview,
|
73
|
-
|
61
|
+
step: changeRequest.step,
|
74
62
|
delta: -1
|
75
63
|
});
|
76
64
|
});
|
@@ -83,7 +71,7 @@ const updatePendingChangeRequestsCount = ({
|
|
83
71
|
*/
|
84
72
|
await updatePendingChangeRequests({
|
85
73
|
contentReviewMethods: apw.contentReview,
|
86
|
-
changeRequest,
|
74
|
+
step: changeRequest.step,
|
87
75
|
delta: 1
|
88
76
|
});
|
89
77
|
});
|
@@ -100,7 +88,7 @@ const updatePendingChangeRequestsCount = ({
|
|
100
88
|
const delta = resolved === true ? -1 : 1;
|
101
89
|
await updatePendingChangeRequests({
|
102
90
|
contentReviewMethods: apw.contentReview,
|
103
|
-
changeRequest,
|
91
|
+
step: changeRequest.step,
|
104
92
|
delta
|
105
93
|
});
|
106
94
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["updatePendingChangeRequests","contentReviewMethods","step","delta","id","stepId","extractContentReviewIdAndStep","updateContentReview","getNewContentReviewData","data","steps","updateContentReviewStep","pendingChangeRequests","updatePendingChangeRequestsCount","apw","changeRequest","onAfterChangeRequestDelete","subscribe","resolved","contentReview","onAfterChangeRequestCreate","onAfterChangeRequestUpdate","original"],"sources":["updatePendingChangeRequests.ts"],"sourcesContent":["import { ApwChangeRequest, ApwContentReviewCrud, LifeCycleHookCallbackParams } from \"~/types\";\nimport {\n extractContentReviewIdAndStep,\n updateContentReview,\n updateContentReviewStep\n} from \"../utils\";\n\ninterface UpdatePendingChangeRequestsParams {\n contentReviewMethods: ApwContentReviewCrud;\n delta: number;\n step: ApwChangeRequest[\"step\"];\n}\n\nconst updatePendingChangeRequests = async ({\n contentReviewMethods,\n step,\n delta\n}: UpdatePendingChangeRequestsParams): Promise<void> => {\n const { id, stepId } = extractContentReviewIdAndStep(step);\n\n await updateContentReview({\n contentReviewMethods,\n id,\n getNewContentReviewData: data => {\n return {\n ...data,\n steps: updateContentReviewStep(data.steps, stepId, step => ({\n ...step,\n pendingChangeRequests: step.pendingChangeRequests + delta\n }))\n };\n }\n });\n};\n\nexport const updatePendingChangeRequestsCount = ({\n apw\n}: Pick<LifeCycleHookCallbackParams, \"apw\">) => {\n apw.changeRequest.onAfterChangeRequestDelete.subscribe(async ({ changeRequest }) => {\n /**\n * If the deleted changeRequest was marked as resolved. We don't need to do anything here,\n * because \"pendingChangeRequests has been already updated in \"onAfterChangeRequestUpdate\" hook.\n */\n if (changeRequest.resolved === true) {\n return;\n }\n /**\n * After a \"changeRequest\" is deleted, decrement the \"pendingChangeRequests\" count\n * in the corresponding step of the content review entry.\n */\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n step: changeRequest.step,\n delta: -1\n });\n });\n\n apw.changeRequest.onAfterChangeRequestCreate.subscribe(async ({ changeRequest }) => {\n /**\n * After a \"changeRequest\" is created, increment the \"pendingChangeRequests\" count\n * of the corresponding step in the content review entry.\n */\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n step: changeRequest.step,\n delta: 1\n });\n });\n\n apw.changeRequest.onAfterChangeRequestUpdate.subscribe(async ({ changeRequest, original }) => {\n /**\n * After a \"changeRequest\" is created, and the value of \"resolved\" field has changed;\n * then we also need to update the \"pendingChangeRequests\" count of the corresponding step in the content review entry.\n */\n if (original.resolved !== changeRequest.resolved) {\n const resolved = changeRequest.resolved;\n const delta = resolved === true ? -1 : 1;\n\n await updatePendingChangeRequests({\n contentReviewMethods: apw.contentReview,\n step: changeRequest.step,\n delta\n });\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AACA;;;;;;AAYA,MAAMA,2BAA2B,GAAG,OAAO;EACvCC,oBADuC;EAEvCC,IAFuC;EAGvCC;AAHuC,CAAP,KAIoB;EACpD,MAAM;IAAEC,EAAF;IAAMC;EAAN,IAAiB,IAAAC,oCAAA,EAA8BJ,IAA9B,CAAvB;EAEA,MAAM,IAAAK,0BAAA,EAAoB;IACtBN,oBADsB;IAEtBG,EAFsB;IAGtBI,uBAAuB,EAAEC,IAAI,IAAI;MAC7B,uCACOA,IADP;QAEIC,KAAK,EAAE,IAAAC,8BAAA,EAAwBF,IAAI,CAACC,KAA7B,EAAoCL,MAApC,EAA4CH,IAAI,oCAChDA,IADgD;UAEnDU,qBAAqB,EAAEV,IAAI,CAACU,qBAAL,GAA6BT;QAFD,EAAhD;MAFX;IAOH;EAXqB,CAApB,CAAN;AAaH,CApBD;;AAsBO,MAAMU,gCAAgC,GAAG,CAAC;EAC7CC;AAD6C,CAAD,KAEA;EAC5CA,GAAG,CAACC,aAAJ,CAAkBC,0BAAlB,CAA6CC,SAA7C,CAAuD,OAAO;IAAEF;EAAF,CAAP,KAA6B;IAChF;AACR;AACA;AACA;IACQ,IAAIA,aAAa,CAACG,QAAd,KAA2B,IAA/B,EAAqC;MACjC;IACH;IACD;AACR;AACA;AACA;;;IACQ,MAAMlB,2BAA2B,CAAC;MAC9BC,oBAAoB,EAAEa,GAAG,CAACK,aADI;MAE9BjB,IAAI,EAAEa,aAAa,CAACb,IAFU;MAG9BC,KAAK,EAAE,CAAC;IAHsB,CAAD,CAAjC;EAKH,CAjBD;EAmBAW,GAAG,CAACC,aAAJ,CAAkBK,0BAAlB,CAA6CH,SAA7C,CAAuD,OAAO;IAAEF;EAAF,CAAP,KAA6B;IAChF;AACR;AACA;AACA;IACQ,MAAMf,2BAA2B,CAAC;MAC9BC,oBAAoB,EAAEa,GAAG,CAACK,aADI;MAE9BjB,IAAI,EAAEa,aAAa,CAACb,IAFU;MAG9BC,KAAK,EAAE;IAHuB,CAAD,CAAjC;EAKH,CAVD;EAYAW,GAAG,CAACC,aAAJ,CAAkBM,0BAAlB,CAA6CJ,SAA7C,CAAuD,OAAO;IAAEF,aAAF;IAAiBO;EAAjB,CAAP,KAAuC;IAC1F;AACR;AACA;AACA;IACQ,IAAIA,QAAQ,CAACJ,QAAT,KAAsBH,aAAa,CAACG,QAAxC,EAAkD;MAC9C,MAAMA,QAAQ,GAAGH,aAAa,CAACG,QAA/B;MACA,MAAMf,KAAK,GAAGe,QAAQ,KAAK,IAAb,GAAoB,CAAC,CAArB,GAAyB,CAAvC;MAEA,MAAMlB,2BAA2B,CAAC;QAC9BC,oBAAoB,EAAEa,GAAG,CAACK,aADI;QAE9BjB,IAAI,EAAEa,aAAa,CAACb,IAFU;QAG9BC;MAH8B,CAAD,CAAjC;IAKH;EACJ,CAfD;AAgBH,CAlDM"}
|
@@ -0,0 +1,157 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.updateTotalCommentsCount = exports.updateLatestCommentId = void 0;
|
9
|
+
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
+
|
12
|
+
var _utils = require("../utils");
|
13
|
+
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
|
+
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
17
|
+
|
18
|
+
const updateTotalCommentsCount = ({
|
19
|
+
apw
|
20
|
+
}) => {
|
21
|
+
apw.comment.onAfterCommentDelete.subscribe(async ({
|
22
|
+
comment
|
23
|
+
}) => {
|
24
|
+
const {
|
25
|
+
step
|
26
|
+
} = comment;
|
27
|
+
/**
|
28
|
+
* After a "comment" is deleted, decrement the "totalComments" count
|
29
|
+
* in the corresponding step of the content review entry.
|
30
|
+
*/
|
31
|
+
|
32
|
+
if (step) {
|
33
|
+
const {
|
34
|
+
id,
|
35
|
+
stepId
|
36
|
+
} = (0, _utils.extractContentReviewIdAndStep)(step);
|
37
|
+
await (0, _utils.updateContentReview)({
|
38
|
+
contentReviewMethods: apw.contentReview,
|
39
|
+
id,
|
40
|
+
getNewContentReviewData: data => {
|
41
|
+
return _objectSpread(_objectSpread({}, data), {}, {
|
42
|
+
steps: (0, _utils.updateContentReviewStep)(data.steps, stepId, step => _objectSpread(_objectSpread({}, step), {}, {
|
43
|
+
totalComments: step.totalComments - 1
|
44
|
+
}))
|
45
|
+
});
|
46
|
+
}
|
47
|
+
});
|
48
|
+
}
|
49
|
+
});
|
50
|
+
apw.comment.onAfterCommentCreate.subscribe(async ({
|
51
|
+
comment
|
52
|
+
}) => {
|
53
|
+
/**
|
54
|
+
* After a "comment" is created, increment the "totalComments" count
|
55
|
+
* of the corresponding step in the content review entry.
|
56
|
+
*/
|
57
|
+
const {
|
58
|
+
id,
|
59
|
+
stepId
|
60
|
+
} = (0, _utils.extractContentReviewIdAndStep)(comment.step);
|
61
|
+
await (0, _utils.updateContentReview)({
|
62
|
+
contentReviewMethods: apw.contentReview,
|
63
|
+
id,
|
64
|
+
getNewContentReviewData: data => {
|
65
|
+
return _objectSpread(_objectSpread({}, data), {}, {
|
66
|
+
steps: (0, _utils.updateContentReviewStep)(data.steps, stepId, step => _objectSpread(_objectSpread({}, step), {}, {
|
67
|
+
totalComments: step.totalComments + 1
|
68
|
+
}))
|
69
|
+
});
|
70
|
+
}
|
71
|
+
});
|
72
|
+
});
|
73
|
+
};
|
74
|
+
|
75
|
+
exports.updateTotalCommentsCount = updateTotalCommentsCount;
|
76
|
+
|
77
|
+
const updateLatestCommentId = ({
|
78
|
+
apw
|
79
|
+
}) => {
|
80
|
+
apw.comment.onAfterCommentCreate.subscribe(async ({
|
81
|
+
comment
|
82
|
+
}) => {
|
83
|
+
/**
|
84
|
+
* After a "comment" is created, update the "latestCommentId" in
|
85
|
+
* the corresponding content review entry.
|
86
|
+
*/
|
87
|
+
const {
|
88
|
+
id
|
89
|
+
} = (0, _utils.extractContentReviewIdAndStep)(comment.step);
|
90
|
+
await (0, _utils.updateContentReview)({
|
91
|
+
contentReviewMethods: apw.contentReview,
|
92
|
+
id,
|
93
|
+
getNewContentReviewData: contentReview => {
|
94
|
+
return _objectSpread(_objectSpread({}, contentReview), {}, {
|
95
|
+
latestCommentId: comment.id
|
96
|
+
});
|
97
|
+
}
|
98
|
+
});
|
99
|
+
});
|
100
|
+
apw.comment.onAfterCommentUpdate.subscribe(async ({
|
101
|
+
comment
|
102
|
+
}) => {
|
103
|
+
/**
|
104
|
+
* After a "comment" is updated, update the "latestCommentId" in
|
105
|
+
* the corresponding content review entry.
|
106
|
+
*/
|
107
|
+
const {
|
108
|
+
id
|
109
|
+
} = (0, _utils.extractContentReviewIdAndStep)(comment.step);
|
110
|
+
await (0, _utils.updateContentReview)({
|
111
|
+
contentReviewMethods: apw.contentReview,
|
112
|
+
id,
|
113
|
+
getNewContentReviewData: contentReview => {
|
114
|
+
return _objectSpread(_objectSpread({}, contentReview), {}, {
|
115
|
+
latestCommentId: comment.id
|
116
|
+
});
|
117
|
+
}
|
118
|
+
});
|
119
|
+
});
|
120
|
+
apw.comment.onAfterCommentDelete.subscribe(async ({
|
121
|
+
comment
|
122
|
+
}) => {
|
123
|
+
/**
|
124
|
+
* After a "comment" is updated, update the "latestCommentId" in
|
125
|
+
* the corresponding content review entry.
|
126
|
+
*/
|
127
|
+
const {
|
128
|
+
id
|
129
|
+
} = (0, _utils.extractContentReviewIdAndStep)(comment.step);
|
130
|
+
const contentReview = await (0, _utils.safelyGetContentReview)({
|
131
|
+
id,
|
132
|
+
contentReviewMethods: apw.contentReview
|
133
|
+
});
|
134
|
+
|
135
|
+
if (contentReview && contentReview.latestCommentId === comment.id) {
|
136
|
+
const [[latestComment]] = await apw.comment.list({
|
137
|
+
where: {
|
138
|
+
changeRequest: {
|
139
|
+
id: comment.changeRequest
|
140
|
+
}
|
141
|
+
},
|
142
|
+
sort: ["createdOn_DESC"]
|
143
|
+
});
|
144
|
+
await (0, _utils.updateContentReview)({
|
145
|
+
contentReviewMethods: apw.contentReview,
|
146
|
+
id,
|
147
|
+
getNewContentReviewData: contentReview => {
|
148
|
+
return _objectSpread(_objectSpread({}, contentReview), {}, {
|
149
|
+
latestCommentId: latestComment ? latestComment.id : null
|
150
|
+
});
|
151
|
+
}
|
152
|
+
});
|
153
|
+
}
|
154
|
+
});
|
155
|
+
};
|
156
|
+
|
157
|
+
exports.updateLatestCommentId = updateLatestCommentId;
|