Use dynamicLoader for main (#481)
* Update style of search-main and float-main to have better parity * Use dynamicLoader to inject scripts and CSS
This commit is contained in:
parent
4e0fc76fe1
commit
887d769786
@ -19,10 +19,14 @@
|
||||
* DisplaySearch
|
||||
* apiForwardLogsToBackend
|
||||
* apiOptionsGet
|
||||
* dynamicLoader
|
||||
*/
|
||||
|
||||
function injectSearchFrontend() {
|
||||
const scriptSrcs = [
|
||||
async function injectSearchFrontend() {
|
||||
dynamicLoader.loadStyles([
|
||||
'/fg/css/client.css'
|
||||
]);
|
||||
await dynamicLoader.loadScripts([
|
||||
'/mixed/js/text-scanner.js',
|
||||
'/fg/js/frontend-api-receiver.js',
|
||||
'/fg/js/frame-offset-forwarder.js',
|
||||
@ -30,27 +34,7 @@ function injectSearchFrontend() {
|
||||
'/fg/js/popup-proxy-host.js',
|
||||
'/fg/js/frontend.js',
|
||||
'/fg/js/content-script-main.js'
|
||||
];
|
||||
for (const src of scriptSrcs) {
|
||||
const node = document.querySelector(`script[src='${src}']`);
|
||||
if (node !== null) { continue; }
|
||||
|
||||
const script = document.createElement('script');
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
|
||||
const styleSrcs = [
|
||||
'/fg/css/client.css'
|
||||
];
|
||||
for (const src of styleSrcs) {
|
||||
const style = document.createElement('link');
|
||||
style.rel = 'stylesheet';
|
||||
style.type = 'text/css';
|
||||
style.href = src;
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
(async () => {
|
||||
@ -63,18 +47,15 @@ function injectSearchFrontend() {
|
||||
let optionsApplied = false;
|
||||
|
||||
const applyOptions = async () => {
|
||||
const optionsContext = {
|
||||
depth: 0,
|
||||
url: window.location.href
|
||||
};
|
||||
const optionsContext = {depth: 0, url: window.location.href};
|
||||
const options = await apiOptionsGet(optionsContext);
|
||||
if (!options.scanning.enableOnSearchPage || optionsApplied) { return; }
|
||||
|
||||
optionsApplied = true;
|
||||
yomichan.off('optionsUpdated', applyOptions);
|
||||
|
||||
window.frontendInitializationData = {depth: 1, proxy: false, isSearchPage: true};
|
||||
injectSearchFrontend();
|
||||
|
||||
yomichan.off('optionsUpdated', applyOptions);
|
||||
await injectSearchFrontend();
|
||||
};
|
||||
|
||||
yomichan.on('optionsUpdated', applyOptions);
|
||||
|
@ -86,6 +86,7 @@
|
||||
<script src="/mixed/js/display-context.js"></script>
|
||||
<script src="/mixed/js/display.js"></script>
|
||||
<script src="/mixed/js/display-generator.js"></script>
|
||||
<script src="/mixed/js/dynamic-loader.js"></script>
|
||||
<script src="/mixed/js/media-loader.js"></script>
|
||||
<script src="/mixed/js/scroll.js"></script>
|
||||
<script src="/mixed/js/text-scanner.js"></script>
|
||||
|
@ -52,6 +52,7 @@
|
||||
<script src="/mixed/js/display-context.js"></script>
|
||||
<script src="/mixed/js/display.js"></script>
|
||||
<script src="/mixed/js/display-generator.js"></script>
|
||||
<script src="/mixed/js/dynamic-loader.js"></script>
|
||||
<script src="/mixed/js/media-loader.js"></script>
|
||||
<script src="/mixed/js/scroll.js"></script>
|
||||
<script src="/mixed/js/template-handler.js"></script>
|
||||
|
@ -19,23 +19,18 @@
|
||||
* DisplayFloat
|
||||
* apiForwardLogsToBackend
|
||||
* apiOptionsGet
|
||||
* dynamicLoader
|
||||
*/
|
||||
|
||||
function injectPopupNested() {
|
||||
const scriptSrcs = [
|
||||
async function injectPopupNested() {
|
||||
await dynamicLoader.loadScripts([
|
||||
'/mixed/js/text-scanner.js',
|
||||
'/fg/js/frontend-api-sender.js',
|
||||
'/fg/js/popup.js',
|
||||
'/fg/js/popup-proxy.js',
|
||||
'/fg/js/frontend.js',
|
||||
'/fg/js/content-script-main.js'
|
||||
];
|
||||
for (const src of scriptSrcs) {
|
||||
const script = document.createElement('script');
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
async function popupNestedInitialize(id, depth, parentFrameId, url) {
|
||||
@ -44,23 +39,14 @@ async function popupNestedInitialize(id, depth, parentFrameId, url) {
|
||||
const applyOptions = async () => {
|
||||
const optionsContext = {depth, url};
|
||||
const options = await apiOptionsGet(optionsContext);
|
||||
const popupNestingMaxDepth = options.scanning.popupNestingMaxDepth;
|
||||
|
||||
const maxPopupDepthExceeded = !(
|
||||
typeof popupNestingMaxDepth === 'number' &&
|
||||
typeof depth === 'number' &&
|
||||
depth < popupNestingMaxDepth
|
||||
);
|
||||
if (maxPopupDepthExceeded || optionsApplied) {
|
||||
return;
|
||||
}
|
||||
const maxPopupDepthExceeded = !(typeof depth === 'number' && depth < options.scanning.popupNestingMaxDepth);
|
||||
if (maxPopupDepthExceeded || optionsApplied) { return; }
|
||||
|
||||
optionsApplied = true;
|
||||
yomichan.off('optionsUpdated', applyOptions);
|
||||
|
||||
window.frontendInitializationData = {id, depth, parentFrameId, url, proxy: true};
|
||||
injectPopupNested();
|
||||
|
||||
yomichan.off('optionsUpdated', applyOptions);
|
||||
await injectPopupNested();
|
||||
};
|
||||
|
||||
yomichan.on('optionsUpdated', applyOptions);
|
||||
|
Loading…
Reference in New Issue
Block a user