@webiny/api-website-builder-scheduler 0.0.0-unstable.81ae05e56b → 0.0.0-unstable.a4f3e4ea8b
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/constants.js +8 -4
- package/constants.js.map +1 -1
- package/context.js +16 -15
- package/context.js.map +1 -1
- package/exports/api/website-builder/scheduler.js +0 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.d.ts +4 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js +29 -33
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.d.ts +4 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js +29 -34
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.d.ts +4 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js +29 -34
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.d.ts +4 -2
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js +28 -33
- package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js.map +1 -1
- package/features/CancelScheduledActionOnChange/feature.d.ts +4 -1
- package/features/CancelScheduledActionOnChange/feature.js +9 -16
- package/features/CancelScheduledActionOnChange/feature.js.map +1 -1
- package/features/NamespaceHandler/PageNamespaceHandler.js +29 -28
- package/features/NamespaceHandler/PageNamespaceHandler.js.map +1 -1
- package/features/NamespaceHandler/RedirectNamespaceHandler.js +29 -28
- package/features/NamespaceHandler/RedirectNamespaceHandler.js.map +1 -1
- package/features/PublishActionHandler/PublishPageActionHandler.js +20 -21
- package/features/PublishActionHandler/PublishPageActionHandler.js.map +1 -1
- package/features/PublishActionHandler/PublishRedirectActionHandler.js +20 -22
- package/features/PublishActionHandler/PublishRedirectActionHandler.js.map +1 -1
- package/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js +22 -20
- package/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js.map +1 -1
- package/features/SchedulePublishPageUseCase/abstractions.d.ts +1 -0
- package/features/SchedulePublishPageUseCase/abstractions.js +3 -3
- package/features/SchedulePublishPageUseCase/abstractions.js.map +1 -1
- package/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js +22 -20
- package/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js.map +1 -1
- package/features/SchedulePublishRedirectUseCase/abstractions.d.ts +1 -0
- package/features/SchedulePublishRedirectUseCase/abstractions.js +3 -3
- package/features/SchedulePublishRedirectUseCase/abstractions.js.map +1 -1
- package/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js +22 -20
- package/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js.map +1 -1
- package/features/ScheduleUnpublishPageUseCase/abstractions.d.ts +1 -0
- package/features/ScheduleUnpublishPageUseCase/abstractions.js +3 -3
- package/features/ScheduleUnpublishPageUseCase/abstractions.js.map +1 -1
- package/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js +22 -20
- package/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js.map +1 -1
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.d.ts +1 -0
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.js +3 -3
- package/features/ScheduleUnpublishRedirectUseCase/abstractions.js.map +1 -1
- package/features/UnpublishActionHandler/UnpublishPageActionHandler.js +20 -20
- package/features/UnpublishActionHandler/UnpublishPageActionHandler.js.map +1 -1
- package/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js +20 -21
- package/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js.map +1 -1
- package/features/permissions/WbSchedulerPermissions.d.ts +13 -0
- package/features/permissions/WbSchedulerPermissions.js +26 -0
- package/features/permissions/WbSchedulerPermissions.js.map +1 -0
- package/index.js +4 -3
- package/index.js.map +1 -1
- package/package.json +26 -23
- package/types.js +0 -3
- package/utils/namespace.js +7 -12
- package/utils/namespace.js.map +1 -1
- package/exports/api/website-builder/scheduler.js.map +0 -1
- package/types.js.map +0 -1
package/constants.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const WEBSITE_BUILDER_NAMESPACE = "WebsiteBuilder/Type/";
|
|
2
|
+
const SCHEDULED_ACTION_TYPE_PAGE = "page";
|
|
3
|
+
const SCHEDULED_ACTION_TYPE_REDIRECT = "redirect";
|
|
4
|
+
const SCHEDULED_ACTION_TYPES = [
|
|
5
|
+
SCHEDULED_ACTION_TYPE_PAGE,
|
|
6
|
+
SCHEDULED_ACTION_TYPE_REDIRECT
|
|
7
|
+
];
|
|
8
|
+
export { SCHEDULED_ACTION_TYPES, SCHEDULED_ACTION_TYPE_PAGE, SCHEDULED_ACTION_TYPE_REDIRECT, WEBSITE_BUILDER_NAMESPACE };
|
|
5
9
|
|
|
6
10
|
//# sourceMappingURL=constants.js.map
|
package/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const WEBSITE_BUILDER_NAMESPACE = \"WebsiteBuilder/Type/\";\n\nexport const SCHEDULED_ACTION_TYPE_PAGE = \"page\" as const;\nexport const SCHEDULED_ACTION_TYPE_REDIRECT = \"redirect\" as const;\n\nexport const SCHEDULED_ACTION_TYPES = [\n SCHEDULED_ACTION_TYPE_PAGE,\n SCHEDULED_ACTION_TYPE_REDIRECT\n] as const;\n"],"names":["WEBSITE_BUILDER_NAMESPACE","SCHEDULED_ACTION_TYPE_PAGE","SCHEDULED_ACTION_TYPE_REDIRECT","SCHEDULED_ACTION_TYPES"],"mappings":"AAAO,MAAMA,4BAA4B;AAElC,MAAMC,6BAA6B;AACnC,MAAMC,iCAAiC;AAEvC,MAAMC,yBAAyB;IAClCF;IACAC;CACH"}
|
package/context.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ContextPlugin } from "@webiny/api";
|
|
2
2
|
import { CancelScheduledActionOnChangeFeature } from "./features/CancelScheduledActionOnChange/feature.js";
|
|
3
|
+
import { WbSchedulerPermissions } from "./features/permissions/WbSchedulerPermissions.js";
|
|
3
4
|
import { PageNamespaceHandler } from "./features/NamespaceHandler/PageNamespaceHandler.js";
|
|
4
5
|
import { RedirectNamespaceHandler } from "./features/NamespaceHandler/RedirectNamespaceHandler.js";
|
|
5
6
|
import { PublishPageActionHandler } from "./features/PublishActionHandler/PublishPageActionHandler.js";
|
|
@@ -10,20 +11,20 @@ import { SchedulePublishPageUseCase } from "./features/SchedulePublishPageUseCas
|
|
|
10
11
|
import { ScheduleUnpublishPageUseCase } from "./features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js";
|
|
11
12
|
import { SchedulePublishRedirectUseCase } from "./features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js";
|
|
12
13
|
import { ScheduleUnpublishRedirectUseCase } from "./features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
14
|
+
const createWebsiteBuilderScheduleContext = ()=>new ContextPlugin(async (context)=>{
|
|
15
|
+
context.container.register(PageNamespaceHandler);
|
|
16
|
+
context.container.register(RedirectNamespaceHandler);
|
|
17
|
+
context.container.register(PublishPageActionHandler);
|
|
18
|
+
context.container.register(PublishRedirectActionHandler);
|
|
19
|
+
context.container.register(UnpublishPageActionHandler);
|
|
20
|
+
context.container.register(UnpublishRedirectActionHandler);
|
|
21
|
+
context.container.register(SchedulePublishPageUseCase);
|
|
22
|
+
context.container.register(ScheduleUnpublishPageUseCase);
|
|
23
|
+
context.container.register(SchedulePublishRedirectUseCase);
|
|
24
|
+
context.container.register(ScheduleUnpublishRedirectUseCase);
|
|
25
|
+
CancelScheduledActionOnChangeFeature.register(context.container);
|
|
26
|
+
context.container.register(WbSchedulerPermissions);
|
|
27
|
+
});
|
|
28
|
+
export { createWebsiteBuilderScheduleContext };
|
|
28
29
|
|
|
29
30
|
//# sourceMappingURL=context.js.map
|
package/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../src/context.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CancelScheduledActionOnChangeFeature } from \"~/features/CancelScheduledActionOnChange/feature.js\";\nimport { WbSchedulerPermissions } from \"~/features/permissions/WbSchedulerPermissions.js\";\nimport { PageNamespaceHandler } from \"~/features/NamespaceHandler/PageNamespaceHandler.js\";\nimport { RedirectNamespaceHandler } from \"~/features/NamespaceHandler/RedirectNamespaceHandler.js\";\nimport { PublishPageActionHandler } from \"~/features/PublishActionHandler/PublishPageActionHandler.js\";\nimport { PublishRedirectActionHandler } from \"~/features/PublishActionHandler/PublishRedirectActionHandler.js\";\nimport { UnpublishPageActionHandler } from \"~/features/UnpublishActionHandler/UnpublishPageActionHandler.js\";\nimport { UnpublishRedirectActionHandler } from \"~/features/UnpublishActionHandler/UnpublishRedirectActionHandler.js\";\nimport { SchedulePublishPageUseCase } from \"~/features/SchedulePublishPageUseCase/SchedulePublishPageUseCase.js\";\nimport { ScheduleUnpublishPageUseCase } from \"~/features/ScheduleUnpublishPageUseCase/ScheduleUnpublishPageUseCase.js\";\nimport { SchedulePublishRedirectUseCase } from \"~/features/SchedulePublishRedirectUseCase/SchedulePublishRedirectUseCase.js\";\nimport { ScheduleUnpublishRedirectUseCase } from \"~/features/ScheduleUnpublishRedirectUseCase/ScheduleUnpublishRedirectUseCase.js\";\n\nexport const createWebsiteBuilderScheduleContext = () => {\n return new ContextPlugin(async context => {\n context.container.register(PageNamespaceHandler);\n context.container.register(RedirectNamespaceHandler);\n context.container.register(PublishPageActionHandler);\n context.container.register(PublishRedirectActionHandler);\n context.container.register(UnpublishPageActionHandler);\n context.container.register(UnpublishRedirectActionHandler);\n context.container.register(SchedulePublishPageUseCase);\n context.container.register(ScheduleUnpublishPageUseCase);\n context.container.register(SchedulePublishRedirectUseCase);\n context.container.register(ScheduleUnpublishRedirectUseCase);\n\n CancelScheduledActionOnChangeFeature.register(context.container);\n context.container.register(WbSchedulerPermissions);\n });\n};\n"],"names":["createWebsiteBuilderScheduleContext","ContextPlugin","context","PageNamespaceHandler","RedirectNamespaceHandler","PublishPageActionHandler","PublishRedirectActionHandler","UnpublishPageActionHandler","UnpublishRedirectActionHandler","SchedulePublishPageUseCase","ScheduleUnpublishPageUseCase","SchedulePublishRedirectUseCase","ScheduleUnpublishRedirectUseCase","CancelScheduledActionOnChangeFeature","WbSchedulerPermissions"],"mappings":";;;;;;;;;;;;;AAcO,MAAMA,sCAAsC,IACxC,IAAIC,cAAc,OAAMC;QAC3BA,QAAQ,SAAS,CAAC,QAAQ,CAACC;QAC3BD,QAAQ,SAAS,CAAC,QAAQ,CAACE;QAC3BF,QAAQ,SAAS,CAAC,QAAQ,CAACG;QAC3BH,QAAQ,SAAS,CAAC,QAAQ,CAACI;QAC3BJ,QAAQ,SAAS,CAAC,QAAQ,CAACK;QAC3BL,QAAQ,SAAS,CAAC,QAAQ,CAACM;QAC3BN,QAAQ,SAAS,CAAC,QAAQ,CAACO;QAC3BP,QAAQ,SAAS,CAAC,QAAQ,CAACQ;QAC3BR,QAAQ,SAAS,CAAC,QAAQ,CAACS;QAC3BT,QAAQ,SAAS,CAAC,QAAQ,CAACU;QAE3BC,qCAAqC,QAAQ,CAACX,QAAQ,SAAS;QAC/DA,QAAQ,SAAS,CAAC,QAAQ,CAACY;IAC/B"}
|
|
@@ -2,5 +2,3 @@ export { SchedulePublishPageUseCase } from "../../../features/SchedulePublishPag
|
|
|
2
2
|
export { ScheduleUnpublishPageUseCase } from "../../../features/ScheduleUnpublishPageUseCase/abstractions.js";
|
|
3
3
|
export { SchedulePublishRedirectUseCase } from "../../../features/SchedulePublishRedirectUseCase/abstractions.js";
|
|
4
4
|
export { ScheduleUnpublishRedirectUseCase } from "../../../features/ScheduleUnpublishRedirectUseCase/abstractions.js";
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=scheduler.js.map
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
/**
|
|
4
5
|
* Cancels scheduled actions when a page is deleted.
|
|
5
6
|
*
|
|
@@ -9,10 +10,11 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
|
|
|
9
10
|
declare class CancelScheduledActionOnPageDeleteHandlerImpl implements PageAfterDeleteEventHandler.Interface {
|
|
10
11
|
private listScheduledActions;
|
|
11
12
|
private cancelScheduledAction;
|
|
12
|
-
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
|
|
13
15
|
handle(event: PageAfterDeleteEventHandler.Event): Promise<void>;
|
|
14
16
|
}
|
|
15
17
|
export declare const CancelScheduledActionOnPageDeleteEventHandler: typeof CancelScheduledActionOnPageDeleteHandlerImpl & {
|
|
16
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
18
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/DeletePage/abstractions").PageAfterDeletePayload>>>;
|
|
17
19
|
};
|
|
18
20
|
export {};
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js
CHANGED
|
@@ -1,43 +1,39 @@
|
|
|
1
1
|
import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
import { createNamespace } from "../../utils/namespace.js";
|
|
4
5
|
import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Cancels scheduled actions when a page is deleted.
|
|
8
|
-
*
|
|
9
|
-
* When a user deletes a page revision, any scheduled publish/unpublish
|
|
10
|
-
* actions for that revision should be canceled since the page no longer exists.
|
|
11
|
-
*/
|
|
12
6
|
class CancelScheduledActionOnPageDeleteHandlerImpl {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// The page was deleted successfully, cancelling scheduled actions is best-effort.
|
|
34
|
-
}
|
|
7
|
+
constructor(listScheduledActions, cancelScheduledAction, logger){
|
|
8
|
+
this.listScheduledActions = listScheduledActions;
|
|
9
|
+
this.cancelScheduledAction = cancelScheduledAction;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const actionsResult = await this.listScheduledActions.execute({
|
|
15
|
+
limit: 10000,
|
|
16
|
+
where: {
|
|
17
|
+
namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),
|
|
18
|
+
targetId: page.id
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (actionsResult.isFail()) return void this.logger.error(actionsResult.error);
|
|
22
|
+
const actions = actionsResult.value.items;
|
|
23
|
+
for (const action of actions){
|
|
24
|
+
const cancelRes = await this.cancelScheduledAction.execute(action);
|
|
25
|
+
cancelRes.isFail();
|
|
26
|
+
}
|
|
35
27
|
}
|
|
36
|
-
}
|
|
37
28
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
const CancelScheduledActionOnPageDeleteEventHandler = PageAfterDeleteEventHandler.createImplementation({
|
|
30
|
+
implementation: CancelScheduledActionOnPageDeleteHandlerImpl,
|
|
31
|
+
dependencies: [
|
|
32
|
+
ListScheduledActionsUseCase,
|
|
33
|
+
CancelScheduledActionUseCase,
|
|
34
|
+
Logger
|
|
35
|
+
]
|
|
41
36
|
});
|
|
37
|
+
export { CancelScheduledActionOnPageDeleteEventHandler };
|
|
42
38
|
|
|
43
39
|
//# sourceMappingURL=CancelScheduledActionOnPageDeleteEventHandler.js.map
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageDeleteEventHandler.ts"],"sourcesContent":["import { PageAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/exports/api/logger.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a page is deleted.\n *\n * When a user deletes a page revision, any scheduled publish/unpublish\n * actions for that revision should be canceled since the page no longer exists.\n */\nclass CancelScheduledActionOnPageDeleteHandlerImpl\n implements PageAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n limit: 10000,\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(actionsResult.error);\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The page was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageDeleteEventHandler =\n PageAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPageDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnPageDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","actions","action","cancelRes","CancelScheduledActionOnPageDeleteEventHandler","PageAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAeA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;YACP,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAACA,cAAc,KAAK;QAIzC,MAAMG,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,gDACTC,4BAA4B,oBAAoB,CAAC;IAC7C,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;QAA8BC;KAAO;AACrF"}
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PageAfterPublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
/**
|
|
4
5
|
* Cancels scheduled "publish" when a page is manually published.
|
|
5
6
|
*
|
|
@@ -10,10 +11,11 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
|
|
|
10
11
|
declare class CancelScheduledActionOnPublishEventHandlerImpl implements PageAfterPublishEventHandler.Interface {
|
|
11
12
|
private listScheduledActions;
|
|
12
13
|
private cancelScheduledAction;
|
|
13
|
-
|
|
14
|
+
private logger;
|
|
15
|
+
constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
|
|
14
16
|
handle(event: PageAfterPublishEventHandler.Event): Promise<void>;
|
|
15
17
|
}
|
|
16
18
|
export declare const CancelScheduledActionOnPagePublishEventHandler: typeof CancelScheduledActionOnPublishEventHandlerImpl & {
|
|
17
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/PublishPage/abstractions").PageAfterPublishPayload>>>;
|
|
18
20
|
};
|
|
19
21
|
export {};
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js
CHANGED
|
@@ -1,44 +1,39 @@
|
|
|
1
1
|
import { PageAfterPublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase, ScheduledActionTypePublish } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
import { createNamespace } from "../../utils/namespace.js";
|
|
4
5
|
import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Cancels scheduled "publish" when a page is manually published.
|
|
8
|
-
*
|
|
9
|
-
* When a user manually publishes a page, any scheduled publish
|
|
10
|
-
* action for that page should be canceled since the manual action
|
|
11
|
-
* takes precedence.
|
|
12
|
-
*/
|
|
13
6
|
class CancelScheduledActionOnPublishEventHandlerImpl {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// Even if a schedule runs on an already published page, nothing bad will happen.
|
|
35
|
-
}
|
|
7
|
+
constructor(listScheduledActions, cancelScheduledAction, logger){
|
|
8
|
+
this.listScheduledActions = listScheduledActions;
|
|
9
|
+
this.cancelScheduledAction = cancelScheduledAction;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const actionsResult = await this.listScheduledActions.execute({
|
|
15
|
+
where: {
|
|
16
|
+
namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),
|
|
17
|
+
actionType: ScheduledActionTypePublish,
|
|
18
|
+
targetId: page.id
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (actionsResult.isFail()) return void this.logger.error(actionsResult.error);
|
|
22
|
+
const actions = actionsResult.value.items;
|
|
23
|
+
for (const action of actions){
|
|
24
|
+
const cancelRes = await this.cancelScheduledAction.execute(action);
|
|
25
|
+
cancelRes.isFail();
|
|
26
|
+
}
|
|
36
27
|
}
|
|
37
|
-
}
|
|
38
28
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
const CancelScheduledActionOnPagePublishEventHandler = PageAfterPublishEventHandler.createImplementation({
|
|
30
|
+
implementation: CancelScheduledActionOnPublishEventHandlerImpl,
|
|
31
|
+
dependencies: [
|
|
32
|
+
ListScheduledActionsUseCase,
|
|
33
|
+
CancelScheduledActionUseCase,
|
|
34
|
+
Logger
|
|
35
|
+
]
|
|
42
36
|
});
|
|
37
|
+
export { CancelScheduledActionOnPagePublishEventHandler };
|
|
43
38
|
|
|
44
39
|
//# sourceMappingURL=CancelScheduledActionOnPagePublishEventHandler.js.map
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPagePublishEventHandler.ts"],"sourcesContent":["import { PageAfterPublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypePublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/exports/api/logger.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"publish\" when a page is manually published.\n *\n * When a user manually publishes a page, any scheduled publish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnPublishEventHandlerImpl\n implements PageAfterPublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterPublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypePublish,\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(actionsResult.error);\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Even if a schedule runs on an already published page, nothing bad will happen.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPagePublishEventHandler =\n PageAfterPublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnPublishEventHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnPublishEventHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypePublish","actions","action","cancelRes","CancelScheduledActionOnPagePublishEventHandler","PageAfterPublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAiBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAACA,cAAc,KAAK;QAIzC,MAAMI,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,iDACTC,6BAA6B,oBAAoB,CAAC;IAC9C,gBAAgBd;IAChB,cAAc;QAACe;QAA6BC;QAA8BC;KAAO;AACrF"}
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PageAfterUnpublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
/**
|
|
4
5
|
* Cancels scheduled "unpublish" when a page is manually unpublished.
|
|
5
6
|
*
|
|
@@ -10,10 +11,11 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
|
|
|
10
11
|
declare class CancelScheduledActionOnUnpublishHandlerImpl implements PageAfterUnpublishEventHandler.Interface {
|
|
11
12
|
private listScheduledActions;
|
|
12
13
|
private cancelScheduledAction;
|
|
13
|
-
|
|
14
|
+
private logger;
|
|
15
|
+
constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
|
|
14
16
|
handle(event: PageAfterUnpublishEventHandler.Event): Promise<void>;
|
|
15
17
|
}
|
|
16
18
|
export declare const CancelScheduledActionOnPageUnpublishEventHandler: typeof CancelScheduledActionOnUnpublishHandlerImpl & {
|
|
17
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/UnpublishPage/abstractions").PageAfterUnpublishPayload>>>;
|
|
18
20
|
};
|
|
19
21
|
export {};
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js
CHANGED
|
@@ -1,44 +1,39 @@
|
|
|
1
1
|
import { PageAfterUnpublishEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/page.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase, ScheduledActionTypeUnpublish } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
import { createNamespace } from "../../utils/namespace.js";
|
|
4
5
|
import { SCHEDULED_ACTION_TYPE_PAGE } from "../../constants.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Cancels scheduled "unpublish" when a page is manually unpublished.
|
|
8
|
-
*
|
|
9
|
-
* When a user manually unpublishes a page, any scheduled unpublish
|
|
10
|
-
* action for that page should be canceled since the manual action
|
|
11
|
-
* takes precedence.
|
|
12
|
-
*/
|
|
13
6
|
class CancelScheduledActionOnUnpublishHandlerImpl {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// Page was unpublished successfully, cancelling scheduled actions is best-effort.
|
|
35
|
-
}
|
|
7
|
+
constructor(listScheduledActions, cancelScheduledAction, logger){
|
|
8
|
+
this.listScheduledActions = listScheduledActions;
|
|
9
|
+
this.cancelScheduledAction = cancelScheduledAction;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const actionsResult = await this.listScheduledActions.execute({
|
|
15
|
+
where: {
|
|
16
|
+
namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),
|
|
17
|
+
actionType: ScheduledActionTypeUnpublish,
|
|
18
|
+
targetId: page.id
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (actionsResult.isFail()) return void this.logger.error(actionsResult.error);
|
|
22
|
+
const actions = actionsResult.value.items;
|
|
23
|
+
for (const action of actions){
|
|
24
|
+
const cancelRes = await this.cancelScheduledAction.execute(action);
|
|
25
|
+
cancelRes.isFail();
|
|
26
|
+
}
|
|
36
27
|
}
|
|
37
|
-
}
|
|
38
28
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
const CancelScheduledActionOnPageUnpublishEventHandler = PageAfterUnpublishEventHandler.createImplementation({
|
|
30
|
+
implementation: CancelScheduledActionOnUnpublishHandlerImpl,
|
|
31
|
+
dependencies: [
|
|
32
|
+
ListScheduledActionsUseCase,
|
|
33
|
+
CancelScheduledActionUseCase,
|
|
34
|
+
Logger
|
|
35
|
+
]
|
|
42
36
|
});
|
|
37
|
+
export { CancelScheduledActionOnPageUnpublishEventHandler };
|
|
43
38
|
|
|
44
39
|
//# sourceMappingURL=CancelScheduledActionOnPageUnpublishEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnPageUnpublishEventHandler.ts"],"sourcesContent":["import { PageAfterUnpublishEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/page.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase,\n ScheduledActionTypeUnpublish\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/exports/api/logger.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_PAGE } from \"~/constants.js\";\n\n/**\n * Cancels scheduled \"unpublish\" when a page is manually unpublished.\n *\n * When a user manually unpublishes a page, any scheduled unpublish\n * action for that page should be canceled since the manual action\n * takes precedence.\n */\nclass CancelScheduledActionOnUnpublishHandlerImpl\n implements PageAfterUnpublishEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: PageAfterUnpublishEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_PAGE),\n actionType: ScheduledActionTypeUnpublish,\n targetId: page.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(actionsResult.error);\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // Page was unpublished successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnPageUnpublishEventHandler =\n PageAfterUnpublishEventHandler.createImplementation({\n implementation: CancelScheduledActionOnUnpublishHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnUnpublishHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","page","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_PAGE","ScheduledActionTypeUnpublish","actions","action","cancelRes","CancelScheduledActionOnPageUnpublishEventHandler","PageAfterUnpublishEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAiBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAA2C,EAAiB;QACrE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,YAAYC;gBACZ,UAAUJ,KAAK,EAAE;YACrB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAACA,cAAc,KAAK;QAIzC,MAAMI,UAAUJ,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMK,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,mDACTC,+BAA+B,oBAAoB,CAAC;IAChD,gBAAgBd;IAChB,cAAc;QAACe;QAA6BC;QAA8BC;KAAO;AACrF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RedirectAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/redirect.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
/**
|
|
4
5
|
* Cancels scheduled actions when a redirect is deleted.
|
|
5
6
|
*
|
|
@@ -10,10 +11,11 @@ import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webi
|
|
|
10
11
|
declare class CancelScheduledActionOnRedirectDeleteHandlerImpl implements RedirectAfterDeleteEventHandler.Interface {
|
|
11
12
|
private listScheduledActions;
|
|
12
13
|
private cancelScheduledAction;
|
|
13
|
-
|
|
14
|
+
private logger;
|
|
15
|
+
constructor(listScheduledActions: ListScheduledActionsUseCase.Interface, cancelScheduledAction: CancelScheduledActionUseCase.Interface, logger: Logger.Interface);
|
|
14
16
|
handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void>;
|
|
15
17
|
}
|
|
16
18
|
export declare const CancelScheduledActionOnRedirectDeleteEventHandler: typeof CancelScheduledActionOnRedirectDeleteHandlerImpl & {
|
|
17
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/redirects/DeleteRedirect/abstractions").RedirectAfterDeletePayload>>>;
|
|
18
20
|
};
|
|
19
21
|
export {};
|
package/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js
CHANGED
|
@@ -1,43 +1,38 @@
|
|
|
1
1
|
import { RedirectAfterDeleteEventHandler } from "@webiny/api-website-builder/exports/api/website-builder/redirect.js";
|
|
2
2
|
import { CancelScheduledActionUseCase, ListScheduledActionsUseCase } from "@webiny/api-scheduler/exports/api/scheduler.js";
|
|
3
|
+
import { Logger } from "@webiny/api-core/exports/api/logger.js";
|
|
3
4
|
import { createNamespace } from "../../utils/namespace.js";
|
|
4
5
|
import { SCHEDULED_ACTION_TYPE_REDIRECT } from "../../constants.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Cancels scheduled actions when a redirect is deleted.
|
|
8
|
-
*
|
|
9
|
-
* When a user deletes a redirect, any scheduled publish/unpublish
|
|
10
|
-
* actions for that redirect should be canceled since the redirect
|
|
11
|
-
* no longer exists.
|
|
12
|
-
*/
|
|
13
6
|
class CancelScheduledActionOnRedirectDeleteHandlerImpl {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// The redirect was deleted successfully, cancelling scheduled actions is best-effort.
|
|
34
|
-
}
|
|
7
|
+
constructor(listScheduledActions, cancelScheduledAction, logger){
|
|
8
|
+
this.listScheduledActions = listScheduledActions;
|
|
9
|
+
this.cancelScheduledAction = cancelScheduledAction;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { redirect } = event.payload;
|
|
14
|
+
const actionsResult = await this.listScheduledActions.execute({
|
|
15
|
+
where: {
|
|
16
|
+
namespace: createNamespace(SCHEDULED_ACTION_TYPE_REDIRECT),
|
|
17
|
+
targetId: redirect.id
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
if (actionsResult.isFail()) return void this.logger.error(actionsResult.error);
|
|
21
|
+
const actions = actionsResult.value.items;
|
|
22
|
+
for (const action of actions){
|
|
23
|
+
const cancelRes = await this.cancelScheduledAction.execute(action);
|
|
24
|
+
cancelRes.isFail();
|
|
25
|
+
}
|
|
35
26
|
}
|
|
36
|
-
}
|
|
37
27
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
const CancelScheduledActionOnRedirectDeleteEventHandler = RedirectAfterDeleteEventHandler.createImplementation({
|
|
29
|
+
implementation: CancelScheduledActionOnRedirectDeleteHandlerImpl,
|
|
30
|
+
dependencies: [
|
|
31
|
+
ListScheduledActionsUseCase,
|
|
32
|
+
CancelScheduledActionUseCase,
|
|
33
|
+
Logger
|
|
34
|
+
]
|
|
41
35
|
});
|
|
36
|
+
export { CancelScheduledActionOnRedirectDeleteEventHandler };
|
|
42
37
|
|
|
43
38
|
//# sourceMappingURL=CancelScheduledActionOnRedirectDeleteEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.js","sources":["../../../src/features/CancelScheduledActionOnChange/CancelScheduledActionOnRedirectDeleteEventHandler.ts"],"sourcesContent":["import { RedirectAfterDeleteEventHandler } from \"@webiny/api-website-builder/exports/api/website-builder/redirect.js\";\nimport {\n CancelScheduledActionUseCase,\n ListScheduledActionsUseCase\n} from \"@webiny/api-scheduler/exports/api/scheduler.js\";\nimport { Logger } from \"@webiny/api-core/exports/api/logger.js\";\nimport { createNamespace } from \"~/utils/namespace.js\";\nimport { SCHEDULED_ACTION_TYPE_REDIRECT } from \"~/constants.js\";\n\n/**\n * Cancels scheduled actions when a redirect is deleted.\n *\n * When a user deletes a redirect, any scheduled publish/unpublish\n * actions for that redirect should be canceled since the redirect\n * no longer exists.\n */\nclass CancelScheduledActionOnRedirectDeleteHandlerImpl\n implements RedirectAfterDeleteEventHandler.Interface\n{\n constructor(\n private listScheduledActions: ListScheduledActionsUseCase.Interface,\n private cancelScheduledAction: CancelScheduledActionUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n async handle(event: RedirectAfterDeleteEventHandler.Event): Promise<void> {\n const { redirect } = event.payload;\n\n const actionsResult = await this.listScheduledActions.execute({\n where: {\n namespace: createNamespace(SCHEDULED_ACTION_TYPE_REDIRECT),\n targetId: redirect.id\n }\n });\n\n if (actionsResult.isFail()) {\n this.logger.error(actionsResult.error);\n return;\n }\n\n const actions = actionsResult.value.items;\n\n for (const action of actions) {\n const cancelRes = await this.cancelScheduledAction.execute(action);\n if (cancelRes.isFail()) {\n // Silently ignore errors - this is non-critical cleanup.\n // The redirect was deleted successfully, cancelling scheduled actions is best-effort.\n }\n }\n }\n}\n\nexport const CancelScheduledActionOnRedirectDeleteEventHandler =\n RedirectAfterDeleteEventHandler.createImplementation({\n implementation: CancelScheduledActionOnRedirectDeleteHandlerImpl,\n dependencies: [ListScheduledActionsUseCase, CancelScheduledActionUseCase, Logger]\n });\n"],"names":["CancelScheduledActionOnRedirectDeleteHandlerImpl","listScheduledActions","cancelScheduledAction","logger","event","redirect","actionsResult","createNamespace","SCHEDULED_ACTION_TYPE_REDIRECT","actions","action","cancelRes","CancelScheduledActionOnRedirectDeleteEventHandler","RedirectAfterDeleteEventHandler","ListScheduledActionsUseCase","CancelScheduledActionUseCase","Logger"],"mappings":";;;;;AAgBA,MAAMA;IAGF,YACYC,oBAA2D,EAC3DC,qBAA6D,EAC7DC,MAAwB,CAClC;aAHUF,oBAAoB,GAApBA;aACAC,qBAAqB,GAArBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,OAAOC,KAA4C,EAAiB;QACtE,MAAM,EAAEC,QAAQ,EAAE,GAAGD,MAAM,OAAO;QAElC,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAC1D,OAAO;gBACH,WAAWC,gBAAgBC;gBAC3B,UAAUH,SAAS,EAAE;YACzB;QACJ;QAEA,IAAIC,cAAc,MAAM,IAAI,YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAACA,cAAc,KAAK;QAIzC,MAAMG,UAAUH,cAAc,KAAK,CAAC,KAAK;QAEzC,KAAK,MAAMI,UAAUD,QAAS;YAC1B,MAAME,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACD;YACvDC,UAAU,MAAM;QAIxB;IACJ;AACJ;AAEO,MAAMC,oDACTC,gCAAgC,oBAAoB,CAAC;IACjD,gBAAgBb;IAChB,cAAc;QAACc;QAA6BC;QAA8BC;KAAO;AACrF"}
|
|
@@ -5,4 +5,7 @@
|
|
|
5
5
|
* published, unpublished, or deleted. This ensures scheduled actions
|
|
6
6
|
* don't execute after a user has already performed the action manually.
|
|
7
7
|
*/
|
|
8
|
-
export declare const CancelScheduledActionOnChangeFeature:
|
|
8
|
+
export declare const CancelScheduledActionOnChangeFeature: {
|
|
9
|
+
name: string;
|
|
10
|
+
register(container: import("@webiny/di").Container): void;
|
|
11
|
+
};
|