From 0d388a30766c556c5fe3abc57a6db4322b0588c9 Mon Sep 17 00:00:00 2001 From: liujuping Date: Thu, 12 Jan 2023 18:31:35 +0800 Subject: [PATCH] feat(workspace): resource supports the init lifecycle and initializes plugins --- packages/types/src/shell/model/resource.ts | 1 - packages/workspace/src/resource.ts | 11 ++++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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); }