Skip to content

Commit 1e60bde

Browse files
shiqiWang0JackWang032
authored andcommitted
fix: prevent shortcut loss on editor blur
1 parent 0724872 commit 1e60bde

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

website/src/extensions/main/index.tsx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ import {
33
IEditorTab,
44
IExtension,
55
IMoleculeContext,
6-
TabGroup,
7-
UniqueId
6+
TabGroup
87
} from '@dtinsight/molecule';
9-
import lips from '@jcubic/lips';
108

119
import * as monaco from 'monaco-editor';
1210
import { vsPlusTheme } from 'monaco-sql-languages/esm/main';
@@ -37,6 +35,8 @@ import TreeVisualizerPanel from '@/components/treeVisualizerPanel';
3735

3836
const problemsService = new ProblemsService();
3937

38+
// eslint-disable-next-line @typescript-eslint/ban-types
39+
const disposed: { dispose: Function; [key: string]: any }[] = [];
4040
export const mainExt: IExtension = {
4141
id: 'mainExt',
4242
name: 'mainExt',
@@ -380,7 +380,7 @@ export const mainExt: IExtension = {
380380
);
381381
});
382382

383-
molecule.editor.onContextMenuClick((item, tabId, groupId) => {
383+
molecule.editor.onContextMenuClick((item) => {
384384
switch (item.id) {
385385
case 'parse': {
386386
updateParseTree(molecule, languageService);
@@ -392,8 +392,7 @@ export const mainExt: IExtension = {
392392
}
393393
});
394394

395-
molecule.editor.onFocus((item) => {
396-
const groupId = (molecule.editor.getCurrentGroup() || -1) as UniqueId;
395+
molecule.editor.onModelMount((_, groupId) => {
397396
const tab = molecule.editor.getCurrentTab();
398397
if (tab?.id && tab.language) {
399398
molecule.editor.setCurrent(tab?.id, groupId);
@@ -407,15 +406,17 @@ export const mainExt: IExtension = {
407406
analyzeProblems({ fileData, molecule, tab, languageService });
408407
debounceUpdateParseTree(molecule, languageService);
409408
});
409+
},
410+
dispose() {
411+
disposed.forEach((d) => d.dispose());
410412
}
411413
};
412414

413415
const analyzeProblems = debounce((info: any) => {
414416
const { fileData, molecule, tab, languageService } = info || {};
415417
const { value: sql, language } = fileData || {};
416418

417-
// todo: 一定要 active Tab 才能获取到 language
418-
if (!language) return;
419+
if (!language || !sql) return;
419420

420421
languageService.valid(language.toLocaleLowerCase(), sql).then((res: ParseError[]) => {
421422
const problems = convertMsgToProblemItem(tab, sql, res);
@@ -490,7 +491,13 @@ const updateParseTree = (molecule: IMoleculeContext, languageService: LanguageSe
490491
const language = activeTab?.language?.toLocaleLowerCase();
491492

492493
if (!parseTreePanel || !language || !activeTab) return;
493-
const sql = activeTab.model?.getValue() || '';
494+
// 为了解决 activeTab?.model 可能是 undefined 进行getValue 会出现报错问题
495+
let sql = '';
496+
try {
497+
sql = activeTab?.model?.getValue() || '';
498+
} catch (e) {
499+
sql = '';
500+
}
494501

495502
languageService.getSerializedParseTree(language, sql).then((tree) => {
496503
molecule.panel.update({

0 commit comments

Comments
 (0)