refactor CollectionAction

This commit is contained in:
Niels Lyngsø
2023-11-27 09:40:28 +01:00
parent b8023067e3
commit eadd2bee02
3 changed files with 7 additions and 34 deletions

View File

@@ -1,27 +1,10 @@
import { UMB_COLLECTION_CONTEXT } from '../index.js';
import { UmbCollectionContext } from '../types.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api';
import { UmbBaseController } from '@umbraco-cms/backoffice/controller-api';
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
export interface UmbCollectionAction<CollectionContextType = unknown> extends UmbApi {
host: UmbControllerHost;
collectionContext?: CollectionContextType;
export interface UmbCollectionAction extends UmbApi {
execute(): Promise<void>;
}
export abstract class UmbCollectionActionBase<CollectionContextType extends UmbCollectionContext>
implements UmbCollectionAction<CollectionContextType>
{
host: UmbControllerHost;
collectionContext?: CollectionContextType;
constructor(host: UmbControllerHost) {
this.host = host;
new UmbContextConsumerController(this.host, UMB_COLLECTION_CONTEXT, (instance) => {
// TODO: Be aware we are casting here. We should consider a better solution for typing the contexts. (But notice we still want to capture the collection workspace...)
this.collectionContext = instance as unknown as CollectionContextType;
});
}
export abstract class UmbCollectionActionBase extends UmbBaseController implements UmbCollectionAction {
abstract execute(): Promise<void>;
}

View File

@@ -1,6 +1,4 @@
import { UmbUserCollectionContext } from '../user-collection.context.js';
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api';
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import {
UMB_CREATE_USER_MODAL,
@@ -8,13 +6,13 @@ import {
UmbModalManagerContext,
} from '@umbraco-cms/backoffice/modal';
export class UmbCreateUserCollectionAction extends UmbCollectionActionBase<UmbUserCollectionContext> {
export class UmbCreateUserCollectionAction extends UmbCollectionActionBase {
#modalManagerContext: UmbModalManagerContext | undefined;
constructor(host: UmbControllerHost) {
super(host);
new UmbContextConsumerController(this.host, UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
this.#modalManagerContext = instance;
});
}
@@ -23,7 +21,4 @@ export class UmbCreateUserCollectionAction extends UmbCollectionActionBase<UmbUs
const modalContext = this.#modalManagerContext?.open(UMB_CREATE_USER_MODAL);
await modalContext?.onSubmit();
}
// TODO: look into why this is needed to satisfy the manifest
destroy() {}
}

View File

@@ -1,6 +1,4 @@
import { UmbUserCollectionContext } from '../user-collection.context.js';
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api';
import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import {
UMB_INVITE_USER_MODAL,
@@ -8,13 +6,13 @@ import {
UmbModalManagerContext,
} from '@umbraco-cms/backoffice/modal';
export class UmbInviteUserCollectionAction extends UmbCollectionActionBase<UmbUserCollectionContext> {
export class UmbInviteUserCollectionAction extends UmbCollectionActionBase {
#modalManagerContext: UmbModalManagerContext | undefined;
constructor(host: UmbControllerHost) {
super(host);
new UmbContextConsumerController(this.host, UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
this.#modalManagerContext = instance;
});
}
@@ -23,7 +21,4 @@ export class UmbInviteUserCollectionAction extends UmbCollectionActionBase<UmbUs
const modalContext = this.#modalManagerContext?.open(UMB_INVITE_USER_MODAL);
await modalContext?.onSubmit();
}
// TODO: look into why this is needed to satisfy the manifest
destroy() {}
}