@@ -13,18 +13,18 @@ import {
1313 IAppRenderer ,
1414 FILES_DEFAULTS ,
1515 IReporter ,
16+ getPreferenceThemeId ,
1617} from '@ali/ide-core-browser' ;
1718import { BoxPanel , SplitPanel } from '@ali/ide-core-browser/lib/components' ;
18- import { IThemeService } from '@ali/ide-theme/lib/common' ;
1919import '@ali/ide-core-browser/lib/style/index.less' ;
20- import { FileTreeModelService } from '@ali/ide-file-tree-next/lib/browser/services/file-tree-model.service' ;
2120import * as os from 'os' ;
2221
22+ import '../core/extension.patch' ;
2323import { disposeMode } from '../core/patch' ;
2424
2525import { modules } from '../core/modules' ;
2626import { IconSlim , IDETheme } from '../core/extensions' ;
27- import { mergeConfig , themeStorage } from '../core/utils' ;
27+ import { mergeConfig , getThemeTypeByPreferenceThemeId } from '../core/utils' ;
2828import { LayoutComponent , getDefaultLayoutConfig } from '../core/layout' ;
2929import { IConfig , IAppInstance } from './types' ;
3030import { logPv } from '../core/tracert' ;
@@ -77,31 +77,18 @@ export function createApp({ appConfig, runtimeConfig }: IConfig): IAppInstance {
7777 }
7878 opts . workspaceDir = makeWorkspaceDir ( opts . workspaceDir ) ;
7979
80- let themeType = themeStorage . get ( ) ;
81- if ( ! themeType ) {
82- const defaultTheme = opts . defaultPreferences ?. [ 'general.theme' ] ;
83- opts . extensionMetadata ?. find ( ( item ) => {
84- const themeConfig = item . packageJSON . contributes ?. themes ?. find (
85- ( item : any ) => item . id === defaultTheme
86- ) ;
87- if ( themeConfig ) {
88- themeType = ! themeConfig . uiTheme || themeConfig . uiTheme === 'vs-dark' ? 'dark' : 'light' ;
89- themeStorage . set ( themeType ) ;
90- }
91- } ) ;
92- }
93-
9480 const app = new ClientApp ( opts ) as IAppInstance ;
9581
82+ Object . defineProperty ( app , 'currentThemeType' , {
83+ get ( ) {
84+ const themeId = getPreferenceThemeId ( ) || opts . defaultPreferences ?. [ 'general.theme' ] ;
85+ return getThemeTypeByPreferenceThemeId ( themeId , opts . extensionMetadata ) ;
86+ } ,
87+ } ) ;
88+
9689 const _start = app . start ;
9790 app . start = async ( container : HTMLElement | IAppRenderer ) => {
9891 await _start . call ( app , container ) ;
99- // 在 start 不能 injector.get,否则有的 service 立即初始化,此时 file-system 还没有初始化完成
100- ( app . injector . get ( IThemeService ) as IThemeService ) . onThemeChange ( ( e ) => {
101- themeStorage . set ( e . type ) ;
102- } ) ;
103- // IDE 销毁时,组件会触发 handleTreeBlur,但是 FileContextKey 实例尚未初始化,此时在 dispose 阶段,injector.get(FileContextKey) 会抛出错误
104- app . injector . get ( FileTreeModelService ) . handleTreeBlur ( ) ;
10592
10693 setTimeout ( ( ) => {
10794 logPv ( runtimeConfig . biz || location . hostname ) ;
0 commit comments