mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 22:46:01 +00:00
query parser worker fallback - improved logic
This commit is contained in:
@@ -28,9 +28,6 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import QueryParserWorker from 'web-worker:./QueryParserWorker';
|
import QueryParserWorker from 'web-worker:./QueryParserWorker';
|
||||||
import queryParserWorkerFallback from './queryParserWorkerFallback';
|
import queryParserWorkerFallback from './queryParserWorkerFallback';
|
||||||
import getElectron from '../utility/getElectron';
|
|
||||||
|
|
||||||
const electron = getElectron();
|
|
||||||
|
|
||||||
const EDITOR_ID = `svelte-ace-editor-div:${Math.floor(Math.random() * 10000000000)}`;
|
const EDITOR_ID = `svelte-ace-editor-div:${Math.floor(Math.random() * 10000000000)}`;
|
||||||
const dispatch = createEventDispatcher<{
|
const dispatch = createEventDispatcher<{
|
||||||
@@ -138,18 +135,22 @@
|
|||||||
|
|
||||||
$: watchQueryParserWorker(splitterOptions && $tabVisible);
|
$: watchQueryParserWorker(splitterOptions && $tabVisible);
|
||||||
function watchQueryParserWorker(enabled) {
|
function watchQueryParserWorker(enabled) {
|
||||||
if (electron) return; // electron doesn't support workers
|
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
if (!queryParserWorker) {
|
if (!queryParserWorker) {
|
||||||
queryParserWorker = new QueryParserWorker();
|
try {
|
||||||
queryParserWorker.onmessage = e => {
|
queryParserWorker = new QueryParserWorker();
|
||||||
processParserResult(e.data);
|
queryParserWorker.onmessage = e => {
|
||||||
};
|
processParserResult(e.data);
|
||||||
|
};
|
||||||
|
} catch (err) {
|
||||||
|
queryParserWorker = 'fallback';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (queryParserWorker) {
|
if (queryParserWorker) {
|
||||||
queryParserWorker.terminate();
|
if (queryParserWorker != 'fallback') {
|
||||||
|
queryParserWorker.terminate();
|
||||||
|
}
|
||||||
queryParserWorker = null;
|
queryParserWorker = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,7 +188,7 @@
|
|||||||
|
|
||||||
function changedQueryParts() {
|
function changedQueryParts() {
|
||||||
const editor = getEditor();
|
const editor = getEditor();
|
||||||
if (splitterOptions && editor && (queryParserWorker || electron)) {
|
if (splitterOptions && editor && queryParserWorker) {
|
||||||
const editor = getEditor();
|
const editor = getEditor();
|
||||||
|
|
||||||
const message = {
|
const message = {
|
||||||
@@ -198,7 +199,7 @@
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (electron) {
|
if (queryParserWorker == 'fallback') {
|
||||||
const res = queryParserWorkerFallback(message);
|
const res = queryParserWorkerFallback(message);
|
||||||
processParserResult(res);
|
processParserResult(res);
|
||||||
} else {
|
} else {
|
||||||
@@ -285,7 +286,9 @@
|
|||||||
editor.container.remove();
|
editor.container.remove();
|
||||||
}
|
}
|
||||||
if (queryParserWorker) {
|
if (queryParserWorker) {
|
||||||
queryParserWorker.terminate();
|
if (queryParserWorker != 'fallback') {
|
||||||
|
queryParserWorker.terminate();
|
||||||
|
}
|
||||||
queryParserWorker = null;
|
queryParserWorker = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user