mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import {
|
|
IdeClient,
|
|
IdeConnectionEvent,
|
|
IdeConnectionType,
|
|
logIdeConnection,
|
|
type Config,
|
|
} from '@qwen-code/qwen-code-core';
|
|
import { type LoadedSettings } from '../config/settings.js';
|
|
import { performInitialAuth } from './auth.js';
|
|
import { validateTheme } from './theme.js';
|
|
import { initializeI18n } from '../i18n/index.js';
|
|
|
|
export interface InitializationResult {
|
|
authError: string | null;
|
|
themeError: string | null;
|
|
shouldOpenAuthDialog: boolean;
|
|
geminiMdFileCount: number;
|
|
}
|
|
|
|
/**
|
|
* Orchestrates the application's startup initialization.
|
|
* This runs BEFORE the React UI is rendered.
|
|
* @param config The application config.
|
|
* @param settings The loaded application settings.
|
|
* @returns The results of the initialization.
|
|
*/
|
|
export async function initializeApp(
|
|
config: Config,
|
|
settings: LoadedSettings,
|
|
): Promise<InitializationResult> {
|
|
// Initialize i18n system
|
|
const languageSetting =
|
|
settings.merged.general?.language ||
|
|
process.env['QWEN_CODE_LANG'] ||
|
|
'auto';
|
|
await initializeI18n(languageSetting);
|
|
|
|
const authError = await performInitialAuth(
|
|
config,
|
|
settings.merged.security?.auth?.selectedType,
|
|
);
|
|
const themeError = validateTheme(settings);
|
|
|
|
const shouldOpenAuthDialog =
|
|
settings.merged.security?.auth?.selectedType === undefined || !!authError;
|
|
|
|
if (config.getIdeMode()) {
|
|
const ideClient = await IdeClient.getInstance();
|
|
await ideClient.connect();
|
|
logIdeConnection(config, new IdeConnectionEvent(IdeConnectionType.START));
|
|
}
|
|
|
|
return {
|
|
authError,
|
|
themeError,
|
|
shouldOpenAuthDialog,
|
|
geminiMdFileCount: config.getGeminiMdFileCount(),
|
|
};
|
|
}
|