simplify frontend disable override
This commit is contained in:
parent
d93e3e1a67
commit
5c3641eadb
@ -80,6 +80,7 @@ async function main() {
|
||||
};
|
||||
|
||||
let frontend = null;
|
||||
let frontendPreparePromise = null;
|
||||
|
||||
const applyOptions = async () => {
|
||||
const optionsContext = {depth: isSearchPage ? 0 : depth, url};
|
||||
@ -99,8 +100,10 @@ async function main() {
|
||||
|
||||
if (frontend === null) {
|
||||
frontend = new Frontend(popup);
|
||||
await frontend.prepare();
|
||||
frontendPreparePromise = frontend.prepare();
|
||||
await frontendPreparePromise;
|
||||
} else {
|
||||
await frontendPreparePromise;
|
||||
if (isSearchPage) {
|
||||
const disabled = !options.scanning.enableOnSearchPage;
|
||||
frontend.setDisabledOverride(disabled);
|
||||
|
@ -30,8 +30,7 @@ class Frontend extends TextScanner {
|
||||
super(
|
||||
window,
|
||||
() => this.popup.isProxy() ? [] : [this.popup.getContainer()],
|
||||
[(x, y) => this.popup.containsPoint(x, y)],
|
||||
() => this.popup.depth <= this.options.scanning.popupNestingMaxDepth && !this._disabledOverride
|
||||
[(x, y) => this.popup.containsPoint(x, y)]
|
||||
);
|
||||
|
||||
this.popup = popup;
|
||||
@ -138,10 +137,7 @@ class Frontend extends TextScanner {
|
||||
|
||||
setDisabledOverride(disabled) {
|
||||
this._disabledOverride = disabled;
|
||||
// other cases handed by regular options update
|
||||
if (disabled && this.enabled) {
|
||||
this.setEnabled(false);
|
||||
}
|
||||
this.setEnabled(this.options.general.enable, this._canEnable());
|
||||
}
|
||||
|
||||
async setPopup(popup) {
|
||||
@ -151,7 +147,7 @@ class Frontend extends TextScanner {
|
||||
}
|
||||
|
||||
async updateOptions() {
|
||||
this.setOptions(await apiOptionsGet(this.getOptionsContext()));
|
||||
this.setOptions(await apiOptionsGet(this.getOptionsContext()), this._canEnable());
|
||||
|
||||
const ignoreNodes = ['.scan-disable', '.scan-disable *'];
|
||||
if (!this.options.scanning.enableOnPopupExpressions) {
|
||||
@ -290,6 +286,11 @@ class Frontend extends TextScanner {
|
||||
});
|
||||
}
|
||||
|
||||
_canEnable() {
|
||||
if (this.options === null) { return true; } // called by updateOptions for the first time
|
||||
return this.popup.depth <= this.options.scanning.popupNestingMaxDepth && !this._disabledOverride;
|
||||
}
|
||||
|
||||
async _updatePopupPosition() {
|
||||
const textSource = this.getCurrentTextSource();
|
||||
if (textSource !== null && await this.popup.isVisible()) {
|
||||
|
@ -22,13 +22,11 @@
|
||||
*/
|
||||
|
||||
class TextScanner {
|
||||
constructor(node, ignoreElements, ignorePoints, canEnable=null) {
|
||||
constructor(node, ignoreElements, ignorePoints) {
|
||||
this.node = node;
|
||||
this.ignoreElements = ignoreElements;
|
||||
this.ignorePoints = ignorePoints;
|
||||
|
||||
this.canEnable = canEnable;
|
||||
|
||||
this.ignoreNodes = null;
|
||||
|
||||
this.scanTimerPromise = null;
|
||||
@ -226,12 +224,8 @@ class TextScanner {
|
||||
}
|
||||
}
|
||||
|
||||
setEnabled(enabled) {
|
||||
if (this.canEnable !== null && !this.canEnable()) {
|
||||
enabled = false;
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
setEnabled(enabled, canEnable) {
|
||||
if (enabled && canEnable) {
|
||||
if (!this.enabled) {
|
||||
this.hookEvents();
|
||||
this.enabled = true;
|
||||
@ -277,9 +271,9 @@ class TextScanner {
|
||||
];
|
||||
}
|
||||
|
||||
setOptions(options) {
|
||||
setOptions(options, canEnable=true) {
|
||||
this.options = options;
|
||||
this.setEnabled(this.options.general.enable);
|
||||
this.setEnabled(this.options.general.enable, canEnable);
|
||||
}
|
||||
|
||||
async searchAt(x, y, cause) {
|
||||
|
Loading…
Reference in New Issue
Block a user