11import { Autowired } from '@opensumi/di' ;
22import { getIcon } from '@opensumi/ide-core-browser' ;
33import { ComponentContribution , ComponentRegistry } from '@opensumi/ide-core-browser/lib/layout' ;
4- import { Domain , localize } from '@opensumi/ide-core-common' ;
4+ import { DisposableStore , Domain , localize } from '@opensumi/ide-core-common' ;
55import {
66 BrowserEditorContribution ,
77 EditorComponentRegistry ,
@@ -20,6 +20,8 @@ import { ExtensionResourceProvider } from './extension-resource-provider';
2020export class ExtensionManagerContribution
2121 implements ComponentContribution , MainLayoutContribution , BrowserEditorContribution
2222{
23+ protected _disposables = new DisposableStore ( ) ;
24+
2325 @Autowired ( )
2426 private readonly resourceProvider : ExtensionResourceProvider ;
2527
@@ -30,25 +32,27 @@ export class ExtensionManagerContribution
3032 private readonly extensionManagerService : ExtensionManagerService ;
3133
3234 registerResource ( resourceService : ResourceService ) {
33- resourceService . registerResourceProvider ( this . resourceProvider ) ;
35+ this . _disposables . add ( resourceService . registerResourceProvider ( this . resourceProvider ) ) ;
3436 }
3537
3638 registerEditorComponent ( editorComponentRegistry : EditorComponentRegistry ) {
3739 const EXTENSIONS_DETAIL_COMPONENT_ID = `${ EXTENSION_SCHEME } _detail` ;
38- editorComponentRegistry . registerEditorComponent ( {
40+ this . _disposables . add ( editorComponentRegistry . registerEditorComponent ( {
3941 component : ExtensionDetailView ,
4042 uid : EXTENSIONS_DETAIL_COMPONENT_ID ,
4143 scheme : EXTENSION_SCHEME ,
42- } ) ;
44+ } ) ) ;
4345
44- editorComponentRegistry . registerEditorComponentResolver ( EXTENSION_SCHEME , ( _ , __ , resolve ) => {
45- resolve ( [
46- {
47- type : EditorOpenType . component ,
48- componentId : EXTENSIONS_DETAIL_COMPONENT_ID ,
49- } ,
50- ] ) ;
51- } ) ;
46+ this . _disposables . add (
47+ editorComponentRegistry . registerEditorComponentResolver ( EXTENSION_SCHEME , ( _ , __ , resolve ) => {
48+ resolve ( [
49+ {
50+ type : EditorOpenType . component ,
51+ componentId : EXTENSIONS_DETAIL_COMPONENT_ID ,
52+ } ,
53+ ] ) ;
54+ } ) ,
55+ ) ;
5256 }
5357
5458 registerComponent ( registry : ComponentRegistry ) : void {
@@ -62,13 +66,22 @@ export class ExtensionManagerContribution
6266 } ) ;
6367 }
6468
65- onDidRender ( ) {
69+ async onDidRender ( ) {
70+ await this . mainLayoutService . viewReady . promise ;
6671 const handler = this . mainLayoutService . getTabbarHandler ( enableExtensionsContainerId ) ;
6772 if ( handler ) {
6873 // 在激活的时候获取数据
69- handler . onActivate ( ( ) => {
74+ if ( handler . isActivated ( ) ) {
7075 this . extensionManagerService . init ( ) ;
71- } ) ;
76+ } else {
77+ this . _disposables . add ( handler . onActivate ( ( ) => {
78+ this . extensionManagerService . init ( ) ;
79+ } ) ) ;
80+ }
7281 }
7382 }
83+
84+ dispose ( ) {
85+ this . _disposables . dispose ( ) ;
86+ }
7487}
0 commit comments