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:
toasted-nutbread 2020-04-26 16:56:34 -04:00 committed by GitHub
parent 4e0fc76fe1
commit 887d769786
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 52 deletions

View File

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

View File

@ -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>

View File

@ -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>

View File

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