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 * DisplaySearch
* apiForwardLogsToBackend * apiForwardLogsToBackend
* apiOptionsGet * apiOptionsGet
* dynamicLoader
*/ */
function injectSearchFrontend() { async function injectSearchFrontend() {
const scriptSrcs = [ dynamicLoader.loadStyles([
'/fg/css/client.css'
]);
await dynamicLoader.loadScripts([
'/mixed/js/text-scanner.js', '/mixed/js/text-scanner.js',
'/fg/js/frontend-api-receiver.js', '/fg/js/frontend-api-receiver.js',
'/fg/js/frame-offset-forwarder.js', '/fg/js/frame-offset-forwarder.js',
@ -30,27 +34,7 @@ function injectSearchFrontend() {
'/fg/js/popup-proxy-host.js', '/fg/js/popup-proxy-host.js',
'/fg/js/frontend.js', '/fg/js/frontend.js',
'/fg/js/content-script-main.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 () => { (async () => {
@ -63,18 +47,15 @@ function injectSearchFrontend() {
let optionsApplied = false; let optionsApplied = false;
const applyOptions = async () => { const applyOptions = async () => {
const optionsContext = { const optionsContext = {depth: 0, url: window.location.href};
depth: 0,
url: window.location.href
};
const options = await apiOptionsGet(optionsContext); const options = await apiOptionsGet(optionsContext);
if (!options.scanning.enableOnSearchPage || optionsApplied) { return; } if (!options.scanning.enableOnSearchPage || optionsApplied) { return; }
optionsApplied = true; optionsApplied = true;
yomichan.off('optionsUpdated', applyOptions);
window.frontendInitializationData = {depth: 1, proxy: false, isSearchPage: true}; window.frontendInitializationData = {depth: 1, proxy: false, isSearchPage: true};
injectSearchFrontend(); await injectSearchFrontend();
yomichan.off('optionsUpdated', applyOptions);
}; };
yomichan.on('optionsUpdated', applyOptions); yomichan.on('optionsUpdated', applyOptions);

View File

@ -86,6 +86,7 @@
<script src="/mixed/js/display-context.js"></script> <script src="/mixed/js/display-context.js"></script>
<script src="/mixed/js/display.js"></script> <script src="/mixed/js/display.js"></script>
<script src="/mixed/js/display-generator.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/media-loader.js"></script>
<script src="/mixed/js/scroll.js"></script> <script src="/mixed/js/scroll.js"></script>
<script src="/mixed/js/text-scanner.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-context.js"></script>
<script src="/mixed/js/display.js"></script> <script src="/mixed/js/display.js"></script>
<script src="/mixed/js/display-generator.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/media-loader.js"></script>
<script src="/mixed/js/scroll.js"></script> <script src="/mixed/js/scroll.js"></script>
<script src="/mixed/js/template-handler.js"></script> <script src="/mixed/js/template-handler.js"></script>

View File

@ -19,23 +19,18 @@
* DisplayFloat * DisplayFloat
* apiForwardLogsToBackend * apiForwardLogsToBackend
* apiOptionsGet * apiOptionsGet
* dynamicLoader
*/ */
function injectPopupNested() { async function injectPopupNested() {
const scriptSrcs = [ await dynamicLoader.loadScripts([
'/mixed/js/text-scanner.js', '/mixed/js/text-scanner.js',
'/fg/js/frontend-api-sender.js', '/fg/js/frontend-api-sender.js',
'/fg/js/popup.js', '/fg/js/popup.js',
'/fg/js/popup-proxy.js', '/fg/js/popup-proxy.js',
'/fg/js/frontend.js', '/fg/js/frontend.js',
'/fg/js/content-script-main.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) { async function popupNestedInitialize(id, depth, parentFrameId, url) {
@ -44,23 +39,14 @@ async function popupNestedInitialize(id, depth, parentFrameId, url) {
const applyOptions = async () => { const applyOptions = async () => {
const optionsContext = {depth, url}; const optionsContext = {depth, url};
const options = await apiOptionsGet(optionsContext); const options = await apiOptionsGet(optionsContext);
const popupNestingMaxDepth = options.scanning.popupNestingMaxDepth; const maxPopupDepthExceeded = !(typeof depth === 'number' && depth < options.scanning.popupNestingMaxDepth);
if (maxPopupDepthExceeded || optionsApplied) { return; }
const maxPopupDepthExceeded = !(
typeof popupNestingMaxDepth === 'number' &&
typeof depth === 'number' &&
depth < popupNestingMaxDepth
);
if (maxPopupDepthExceeded || optionsApplied) {
return;
}
optionsApplied = true; optionsApplied = true;
yomichan.off('optionsUpdated', applyOptions);
window.frontendInitializationData = {id, depth, parentFrameId, url, proxy: true}; window.frontendInitializationData = {id, depth, parentFrameId, url, proxy: true};
injectPopupNested(); await injectPopupNested();
yomichan.off('optionsUpdated', applyOptions);
}; };
yomichan.on('optionsUpdated', applyOptions); yomichan.on('optionsUpdated', applyOptions);