allow disabling scan on search page live
This commit is contained in:
parent
1df59d57b5
commit
92109bb5d2
@ -65,7 +65,7 @@ async function main() {
|
|||||||
if (!options.scanning.enableOnSearchPage || optionsApplied) { return; }
|
if (!options.scanning.enableOnSearchPage || optionsApplied) { return; }
|
||||||
optionsApplied = true;
|
optionsApplied = true;
|
||||||
|
|
||||||
window.frontendInitializationData = {depth: 1, proxy: false};
|
window.frontendInitializationData = {depth: 1, proxy: false, isSearchPage: true};
|
||||||
injectSearchFrontend();
|
injectSearchFrontend();
|
||||||
|
|
||||||
yomichan.off('optionsUpdated', applyOptions);
|
yomichan.off('optionsUpdated', applyOptions);
|
||||||
|
@ -28,7 +28,18 @@ async function main() {
|
|||||||
await yomichan.prepare();
|
await yomichan.prepare();
|
||||||
|
|
||||||
const data = window.frontendInitializationData || {};
|
const data = window.frontendInitializationData || {};
|
||||||
const {id, depth=0, parentFrameId, url, proxy=false} = data;
|
const {id, depth=0, parentFrameId, url, proxy=false, isSearchPage=false} = data;
|
||||||
|
|
||||||
|
const initEventDispatcher = new EventDispatcher();
|
||||||
|
|
||||||
|
yomichan.on('optionsUpdated', async () => {
|
||||||
|
const optionsContext = {depth: isSearchPage ? 0 : depth, url};
|
||||||
|
const options = await apiOptionsGet(optionsContext);
|
||||||
|
if (isSearchPage) {
|
||||||
|
const disabled = !options.scanning.enableOnSearchPage;
|
||||||
|
initEventDispatcher.trigger('setDisabledOverride', {disabled});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const optionsContext = {depth, url};
|
const optionsContext = {depth, url};
|
||||||
const options = await apiOptionsGet(optionsContext);
|
const options = await apiOptionsGet(optionsContext);
|
||||||
@ -65,7 +76,7 @@ async function main() {
|
|||||||
popup = popupHost.getOrCreatePopup(null, null, depth);
|
popup = popupHost.getOrCreatePopup(null, null, depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
const frontend = new Frontend(popup);
|
const frontend = new Frontend(popup, initEventDispatcher);
|
||||||
await frontend.prepare();
|
await frontend.prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,15 +26,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class Frontend extends TextScanner {
|
class Frontend extends TextScanner {
|
||||||
constructor(popup) {
|
constructor(popup, initEventDispatcher) {
|
||||||
super(
|
super(
|
||||||
window,
|
window,
|
||||||
popup.isProxy() ? [] : [popup.getContainer()],
|
popup.isProxy() ? [] : [popup.getContainer()],
|
||||||
[(x, y) => this.popup.containsPoint(x, y)],
|
[(x, y) => this.popup.containsPoint(x, y)],
|
||||||
() => this.popup.depth <= this.options.scanning.popupNestingMaxDepth
|
() => this.popup.depth <= this.options.scanning.popupNestingMaxDepth && !this._disabledOverride
|
||||||
);
|
);
|
||||||
|
|
||||||
this.popup = popup;
|
this.popup = popup;
|
||||||
|
this.initEventDispatcher = initEventDispatcher;
|
||||||
|
|
||||||
|
this._disabledOverride = false;
|
||||||
|
|
||||||
this.options = null;
|
this.options = null;
|
||||||
|
|
||||||
this.optionsContext = {
|
this.optionsContext = {
|
||||||
@ -73,6 +77,8 @@ class Frontend extends TextScanner {
|
|||||||
window.visualViewport.addEventListener('resize', this.onVisualViewportResize.bind(this));
|
window.visualViewport.addEventListener('resize', this.onVisualViewportResize.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.initEventDispatcher.on('setDisabledOverride', this.onSetDisabledOverride.bind(this));
|
||||||
|
|
||||||
yomichan.on('orphaned', this.onOrphaned.bind(this));
|
yomichan.on('orphaned', this.onOrphaned.bind(this));
|
||||||
yomichan.on('optionsUpdated', this.updateOptions.bind(this));
|
yomichan.on('optionsUpdated', this.updateOptions.bind(this));
|
||||||
yomichan.on('zoomChanged', this.onZoomChanged.bind(this));
|
yomichan.on('zoomChanged', this.onZoomChanged.bind(this));
|
||||||
@ -228,6 +234,14 @@ class Frontend extends TextScanner {
|
|||||||
super.onSearchClear(changeFocus);
|
super.onSearchClear(changeFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSetDisabledOverride({disabled}) {
|
||||||
|
this._disabledOverride = disabled;
|
||||||
|
// other cases handed by regular options update
|
||||||
|
if (disabled && this.enabled) {
|
||||||
|
this.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
getOptionsContext() {
|
getOptionsContext() {
|
||||||
this.optionsContext.url = this.popup.url;
|
this.optionsContext.url = this.popup.url;
|
||||||
return this.optionsContext;
|
return this.optionsContext;
|
||||||
|
Loading…
Reference in New Issue
Block a user