From e2456ae6698855ce54f29a9e550d5d32be793406 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 31 Oct 2024 19:14:18 +0100 Subject: [PATCH] extract to base class --- .../api-user-entity-create-option-action.ts | 17 ++++-- ...efault-user-entity-create-option-action.ts | 49 ++++------------ .../user-entity-create-option-action-base.ts | 58 +++++++++++++++++++ 3 files changed, 82 insertions(+), 42 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/user-entity-create-option-action-base.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/api-user/api-user-entity-create-option-action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/api-user/api-user-entity-create-option-action.ts index ebb5d4571a..2fd165fed7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/api-user/api-user-entity-create-option-action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/api-user/api-user-entity-create-option-action.ts @@ -1,8 +1,17 @@ -import { UmbEntityCreateOptionActionBase } from '@umbraco-cms/backoffice/entity-create-option-action'; +import { UmbUserEntityCreateOptionActionBase } from '../user-entity-create-option-action-base.js'; +import { UmbUserKind } from '../../../utils/index.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { + MetaEntityCreateOptionAction, + UmbEntityCreateOptionActionArgs, +} from '@umbraco-cms/backoffice/entity-create-option-action'; -export class UmbApiUserEntityCreateOptionAction extends UmbEntityCreateOptionActionBase { - override async execute() { - debugger; +export class UmbApiUserEntityCreateOptionAction extends UmbUserEntityCreateOptionActionBase { + constructor(host: UmbControllerHost, args: UmbEntityCreateOptionActionArgs) { + super(host, { + ...args, + kind: UmbUserKind.API, + }); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/default-user/default-user-entity-create-option-action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/default-user/default-user-entity-create-option-action.ts index 3d67778126..9c67384285 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/default-user/default-user-entity-create-option-action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/default-user/default-user-entity-create-option-action.ts @@ -1,44 +1,17 @@ -import { UMB_CREATE_USER_MODAL } from '../../../modals/create/create-user-modal.token.js'; -import type { UmbUserKindType } from '../../../utils/index.js'; import { UmbUserKind } from '../../../utils/index.js'; -import { UmbEntityCreateOptionActionBase } from '@umbraco-cms/backoffice/entity-create-option-action'; -import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; -import { UmbRequestReloadChildrenOfEntityEvent } from '@umbraco-cms/backoffice/entity-action'; -import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import { UmbUserEntityCreateOptionActionBase } from '../user-entity-create-option-action-base.js'; +import type { + MetaEntityCreateOptionAction, + UmbEntityCreateOptionActionArgs, +} from '@umbraco-cms/backoffice/entity-create-option-action'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -export class UmbDefaultUserEntityCreateOptionAction extends UmbEntityCreateOptionActionBase { - override async execute() { - const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); - const kind: UmbUserKindType = UmbUserKind.DEFAULT; - - const modalContext = modalManager.open(this, UMB_CREATE_USER_MODAL, { - data: { - user: { - kind, - }, - }, +export class UmbDefaultUserEntityCreateOptionAction extends UmbUserEntityCreateOptionActionBase { + constructor(host: UmbControllerHost, args: UmbEntityCreateOptionActionArgs) { + super(host, { + ...args, + kind: UmbUserKind.DEFAULT, }); - - await modalContext - ?.onSubmit() - .then(() => { - this.#requestReloadChildrenOfEntity(); - }) - .catch(async () => { - // modal is closed after creation instead of navigating to the new user. - // We therefore need to reload the children of the entity - this.#requestReloadChildrenOfEntity(); - }); - } - - async #requestReloadChildrenOfEntity() { - const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); - const event = new UmbRequestReloadChildrenOfEntityEvent({ - entityType: this.args.entityType, - unique: this.args.unique, - }); - - eventContext.dispatchEvent(event); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/user-entity-create-option-action-base.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/user-entity-create-option-action-base.ts new file mode 100644 index 0000000000..ea74db1f15 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/entity-actions/create/user-entity-create-option-action-base.ts @@ -0,0 +1,58 @@ +import { UMB_CREATE_USER_MODAL } from '../../modals/create/create-user-modal.token.js'; +import type { UmbUserKindType } from '../../utils/index.js'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbRequestReloadChildrenOfEntityEvent } from '@umbraco-cms/backoffice/entity-action'; +import { + UmbEntityCreateOptionActionBase, + type MetaEntityCreateOptionAction, + type UmbEntityCreateOptionActionArgs, +} from '@umbraco-cms/backoffice/entity-create-option-action'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; + +export interface UmbUserEntityCreateOptionActionBaseArgs + extends UmbEntityCreateOptionActionArgs { + kind: UmbUserKindType; +} + +export abstract class UmbUserEntityCreateOptionActionBase extends UmbEntityCreateOptionActionBase { + #kind: UmbUserKindType; + + constructor(host: UmbControllerHost, args: UmbUserEntityCreateOptionActionBaseArgs) { + super(host, args); + this.#kind = args.kind; + } + + override async execute() { + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + + const modalContext = modalManager.open(this, UMB_CREATE_USER_MODAL, { + data: { + user: { + kind: this.#kind, + }, + }, + }); + + await modalContext + ?.onSubmit() + .then(() => { + this.#requestReloadChildrenOfEntity(); + }) + .catch(async () => { + // modal is closed after creation instead of navigating to the new user. + // We therefore need to reload the children of the entity + this.#requestReloadChildrenOfEntity(); + }); + } + + async #requestReloadChildrenOfEntity() { + const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + const event = new UmbRequestReloadChildrenOfEntityEvent({ + entityType: this.args.entityType, + unique: this.args.unique, + }); + + eventContext.dispatchEvent(event); + } +}