query parser worker fallback - improved logic

This commit is contained in:
Jan Prochazka
2021-12-16 08:01:34 +01:00
parent 1627cca29e
commit bef6efdbdb

View File

@@ -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;
} }
}); });