From a562a1149808b49f60346c82409f292290fbdd77 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 1 Aug 2020 16:33:21 -0400 Subject: [PATCH] Display try catch refactor (#704) * Remove try-catch from _termLookup Already handled by _onTermLookup * Move try-catch out of _onTermLookup and into _onGlossaryMouseUp --- ext/mixed/js/display.js | 106 +++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 55 deletions(-) diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 40febadc..ab0f59a5 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -521,78 +521,74 @@ class Display extends EventDispatcher { _onGlossaryMouseUp(e) { if (!this._clickScanPrevent && DOM.isMouseButtonPressed(e, 'primary')) { - this._onTermLookup(e); + try { + this._onTermLookup(e); + } catch (error) { + this.onError(error); + } } } async _onTermLookup(e) { - try { - if (!this._historyHasState()) { return; } + if (!this._historyHasState()) { return; } - const termLookupResults = await this._termLookup(e); - if (!termLookupResults || !this._historyHasState()) { return; } + const termLookupResults = await this._termLookup(e); + if (!termLookupResults || !this._historyHasState()) { return; } - const {state} = this._history; - const {textSource, definitions} = termLookupResults; + const {state} = this._history; + const {textSource, definitions} = termLookupResults; - const scannedElement = e.target; - const sentenceExtent = this._options.anki.sentenceExt; - const layoutAwareScan = this._options.scanning.layoutAwareScan; - const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan); + const scannedElement = e.target; + const sentenceExtent = this._options.anki.sentenceExt; + const layoutAwareScan = this._options.scanning.layoutAwareScan; + const sentence = docSentenceExtract(textSource, sentenceExtent, layoutAwareScan); - state.focusEntry = this._entryIndexFind(scannedElement); - state.scrollX = this._windowScroll.x; - state.scrollY = this._windowScroll.y; - this._historyStateUpdate(state); + state.focusEntry = this._entryIndexFind(scannedElement); + state.scrollX = this._windowScroll.x; + state.scrollY = this._windowScroll.y; + this._historyStateUpdate(state); - const query = textSource.text(); - const details = { - focus: false, - history: true, - params: this._createSearchParams('terms', query, false), - state: { - focusEntry: 0, - sentence, - url: state.url - }, - content: { - definitions - } - }; - this.setContent(details); - } catch (error) { - this.onError(error); - } + const query = textSource.text(); + const details = { + focus: false, + history: true, + params: this._createSearchParams('terms', query, false), + state: { + focusEntry: 0, + sentence, + url: state.url + }, + content: { + definitions + } + }; + this.setContent(details); } async _termLookup(e) { - try { - e.preventDefault(); + e.preventDefault(); - const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning; - const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan); - if (textSource === null) { + const {length: scanLength, deepDomScan: deepScan, layoutAwareScan} = this._options.scanning; + const textSource = docRangeFromPoint(e.clientX, e.clientY, deepScan); + if (textSource === null) { + return false; + } + + let definitions, length; + try { + textSource.setEndOffset(scanLength, layoutAwareScan); + + ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext())); + if (definitions.length === 0) { return false; } - let definitions, length; - try { - textSource.setEndOffset(scanLength, layoutAwareScan); - - ({definitions, length} = await api.termsFind(textSource.text(), {}, this.getOptionsContext())); - if (definitions.length === 0) { - return false; - } - - textSource.setEndOffset(length, layoutAwareScan); - } finally { - textSource.cleanup(); - } - - return {textSource, definitions}; - } catch (error) { - this.onError(error); + textSource.setEndOffset(length, layoutAwareScan); + } finally { + textSource.cleanup(); } + + return {textSource, definitions}; } _onAudioPlay(e) {