diff --git a/packages/types/src/shell/model/resource.ts b/packages/types/src/shell/model/resource.ts index cfa48f189..5f26c8d7b 100644 --- a/packages/types/src/shell/model/resource.ts +++ b/packages/types/src/shell/model/resource.ts @@ -1,5 +1,4 @@ import { ReactElement } from 'react'; -import { IPublicModelResourceType } from './resource-type'; export interface IPublicModelResource { get title(): string | undefined; diff --git a/packages/workspace/src/resource.ts b/packages/workspace/src/resource.ts index 9753339f0..2495909b4 100644 --- a/packages/workspace/src/resource.ts +++ b/packages/workspace/src/resource.ts @@ -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 = new Map(); 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); }