feat(workspace): resource supports the init lifecycle and initializes plugins

This commit is contained in:
liujuping 2023-01-12 18:31:35 +08:00 committed by 林熠
parent 8537eff893
commit 0d388a3076
2 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,4 @@
import { ReactElement } from 'react';
import { IPublicModelResourceType } from './resource-type';
export interface IPublicModelResource {
get title(): string | undefined;

View File

@ -7,12 +7,16 @@ import { Workspace as InnerWorkSpace } from './workspace';
const logger = new Logger({ level: 'warn', bizName: 'workspace:resource' });
export class Resource implements IPublicModelResource {
private context: BasicContext;
resourceTypeInstance: IPublicResourceTypeConfig;
editorViewMap: Map<string, IPublicTypeEditorView> = new Map<string, IPublicTypeEditorView>();
constructor(readonly resourceData: IPublicResourceData, readonly resourceType: ResourceType, workspace: InnerWorkSpace) {
this.resourceTypeInstance = resourceType.resourceTypeModel(new BasicContext(workspace, ''), {});
this.context = new BasicContext(workspace, '');
this.resourceTypeInstance = resourceType.resourceTypeModel(this.context, {});
this.init();
if (this.resourceTypeInstance.editorViews) {
this.resourceTypeInstance.editorViews.forEach((d: any) => {
this.editorViewMap.set(d.viewName, d);
@ -51,6 +55,11 @@ export class Resource implements IPublicModelResource {
return this.resourceData?.category;
}
async init() {
await this.resourceTypeInstance.init?.();
await this.context.innerPlugins.init();
}
async import(schema: any) {
return await this.resourceTypeInstance.import?.(schema);
}