1- import { Domain , getIcon , localize , SlotLocation } from '@opensumi/ide-core-browser' ;
21import {
2+ Domain ,
3+ getIcon ,
4+ SlotLocation ,
35 ComponentContribution ,
46 ComponentRegistry ,
57 ClientAppContribution ,
8+ WithEventBus ,
69} from '@opensumi/ide-core-browser' ;
710import { Autowired } from '@opensumi/di' ;
811
@@ -13,10 +16,13 @@ import { WebSCMView } from './web-scm';
1316import { MenuContribution , IMenuRegistry } from '@opensumi/ide-core-browser/lib/menu/next' ;
1417import { LayoutState , LAYOUT_STATE } from '@opensumi/ide-core-browser/lib/layout/layout-state' ;
1518import { IMainLayoutService } from '@opensumi/ide-main-layout' ;
16-
19+ import { disposableCollection } from '@alipay/alex/lib/core/patch' ;
20+ import { AccordionService } from '@opensumi/ide-main-layout/lib/browser/accordion/accordion.service' ;
21+ import { WebSCMViewId } from './web-scm/common' ;
22+ import { ChangesTreeViewId } from './changes-tree/common' ;
1723@Domain ( ComponentContribution , MenuContribution , ClientAppContribution )
18- // @ts -ignore
1924export class MergeRequestContribution
25+ extends WithEventBus
2026 implements ComponentContribution , MenuContribution , ClientAppContribution
2127{
2228 @Autowired ( IMainLayoutService )
@@ -38,6 +44,7 @@ export class MergeRequestContribution
3844 }
3945
4046 onDidStart ( ) {
47+ // 重新载入会导致组件未注册 临时修复
4148 const tabbarService = this . layoutService . getTabbarService ( SlotLocation . left ) ;
4249 const componentRegistry =
4350 this . componentRegistry . getComponentRegistryInfo ( MergeRequestExplorerId ) ;
@@ -56,6 +63,20 @@ export class MergeRequestContribution
5663 }
5764 this . layoutService . toggleSlot ( SlotLocation . left , show , size ) ;
5865 }
66+ // 重新载入 titleMenu有缓存 需将其重置
67+ disposableCollection . push ( ( injector ) => {
68+ const accordionService : AccordionService = injector
69+ . get ( IMainLayoutService )
70+ . getAccordionService ( MergeRequestExplorerId ) ;
71+ const views = accordionService . visibleViews . filter (
72+ ( view ) => view . id === WebSCMViewId || view . id === ChangesTreeViewId
73+ ) ;
74+ if ( views . length ) {
75+ views . forEach ( ( view ) => ( view . titleMenu = undefined ) ) ;
76+ }
77+ accordionService . disposeView ( WebSCMViewId ) ;
78+ accordionService . disposeView ( ChangesTreeViewId ) ;
79+ } ) ;
5980 }
6081
6182 registerMenus ( menus : IMenuRegistry ) {
0 commit comments