Api prepare refactor (#1391)
* Refactor API preparation * Run yomichan.prepare manually in the entry point function
This commit is contained in:
parent
94201ed44a
commit
efe8140f10
@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.backendReady();
|
await yomichan.prepare();
|
||||||
|
|
||||||
const {tabId, frameId} = await api.frameInformationGet();
|
const {tabId, frameId} = await api.frameInformationGet();
|
||||||
if (typeof frameId !== 'number') {
|
if (typeof frameId !== 'number') {
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
|
yomichan.prepare(true);
|
||||||
|
|
||||||
const backend = new Backend();
|
const backend = new Backend();
|
||||||
backend.prepare();
|
backend.prepare();
|
||||||
})();
|
})();
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
const api = (() => {
|
const api = (() => {
|
||||||
class API {
|
class API {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._forwardLogsToBackendEnabled = false;
|
this._prepared = false;
|
||||||
this._crossFrame = new CrossFrameAPI();
|
this._crossFrame = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
get crossFrame() {
|
get crossFrame() {
|
||||||
@ -31,20 +31,11 @@ const api = (() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
|
if (this._prepared) { return; }
|
||||||
|
this._crossFrame = new CrossFrameAPI();
|
||||||
this._crossFrame.prepare();
|
this._crossFrame.prepare();
|
||||||
}
|
yomichan.on('log', this._onLog.bind(this));
|
||||||
|
this._prepared = true;
|
||||||
forwardLogsToBackend() {
|
|
||||||
if (this._forwardLogsToBackendEnabled) { return; }
|
|
||||||
this._forwardLogsToBackendEnabled = true;
|
|
||||||
|
|
||||||
yomichan.on('log', async ({error, level, context}) => {
|
|
||||||
try {
|
|
||||||
await this.log(serializeError(error), level, context);
|
|
||||||
} catch (e) {
|
|
||||||
// NOP
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invoke functions
|
// Invoke functions
|
||||||
@ -161,10 +152,6 @@ const api = (() => {
|
|||||||
return this._invoke('getMedia', {targets});
|
return this._invoke('getMedia', {targets});
|
||||||
}
|
}
|
||||||
|
|
||||||
log(error, level, context) {
|
|
||||||
return this._invoke('log', {error, level, context});
|
|
||||||
}
|
|
||||||
|
|
||||||
logIndicatorClear() {
|
logIndicatorClear() {
|
||||||
return this._invoke('logIndicatorClear');
|
return this._invoke('logIndicatorClear');
|
||||||
}
|
}
|
||||||
@ -331,10 +318,16 @@ const api = (() => {
|
|||||||
_checkLastError() {
|
_checkLastError() {
|
||||||
// NOP
|
// NOP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _onLog({error, level, context}) {
|
||||||
|
try {
|
||||||
|
error = serializeError(error);
|
||||||
|
await this._invoke('log', {error, level, context});
|
||||||
|
} catch (e) {
|
||||||
|
// NOP
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
return new API();
|
||||||
const api = new API();
|
|
||||||
api.prepare();
|
|
||||||
return api;
|
|
||||||
})();
|
})();
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
const documentFocusController = new DocumentFocusController();
|
const documentFocusController = new DocumentFocusController();
|
||||||
documentFocusController.prepare();
|
documentFocusController.prepare();
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.backendReady();
|
await yomichan.prepare();
|
||||||
|
|
||||||
const {tabId, frameId} = await api.frameInformationGet();
|
const {tabId, frameId} = await api.frameInformationGet();
|
||||||
|
|
||||||
|
@ -30,8 +30,8 @@
|
|||||||
const documentFocusController = new DocumentFocusController();
|
const documentFocusController = new DocumentFocusController();
|
||||||
documentFocusController.prepare();
|
documentFocusController.prepare();
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.backendReady();
|
await yomichan.prepare();
|
||||||
|
|
||||||
const {tabId, frameId} = await api.frameInformationGet();
|
const {tabId, frameId} = await api.frameInformationGet();
|
||||||
|
|
||||||
|
@ -221,8 +221,8 @@ class DisplayController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.backendReady();
|
await yomichan.prepare();
|
||||||
|
|
||||||
api.logIndicatorClear();
|
api.logIndicatorClear();
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ function getOperatingSystemDisplayName(os) {
|
|||||||
const manifest = chrome.runtime.getManifest();
|
const manifest = chrome.runtime.getManifest();
|
||||||
const language = chrome.i18n.getUILanguage();
|
const language = chrome.i18n.getUILanguage();
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.prepare();
|
await yomichan.prepare();
|
||||||
|
|
||||||
const {userAgent} = navigator;
|
const {userAgent} = navigator;
|
||||||
|
@ -69,7 +69,7 @@ function setupPermissionsToggles() {
|
|||||||
node.textContent = chrome.runtime.getURL('/');
|
node.textContent = chrome.runtime.getURL('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.prepare();
|
await yomichan.prepare();
|
||||||
|
|
||||||
setupEnvironmentInfo();
|
setupEnvironmentInfo();
|
||||||
|
@ -49,7 +49,7 @@ async function setupGenericSettingsController(genericSettingController) {
|
|||||||
const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));
|
const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));
|
||||||
statusFooter.prepare();
|
statusFooter.prepare();
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.prepare();
|
await yomichan.prepare();
|
||||||
|
|
||||||
setupEnvironmentInfo();
|
setupEnvironmentInfo();
|
||||||
|
@ -51,8 +51,8 @@ async function setupEnvironmentInfo() {
|
|||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.backendReady();
|
await yomichan.prepare();
|
||||||
|
|
||||||
setupEnvironmentInfo();
|
setupEnvironmentInfo();
|
||||||
showExtensionInformation();
|
showExtensionInformation();
|
||||||
|
@ -17,10 +17,14 @@
|
|||||||
|
|
||||||
/* global
|
/* global
|
||||||
* DisplayGenerator
|
* DisplayGenerator
|
||||||
|
* api
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
|
api.prepare();
|
||||||
|
await yomichan.prepare();
|
||||||
|
|
||||||
const displayGenerator = new DisplayGenerator({
|
const displayGenerator = new DisplayGenerator({
|
||||||
japaneseUtil: null,
|
japaneseUtil: null,
|
||||||
mediaLoader: null
|
mediaLoader: null
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
|
await yomichan.prepare();
|
||||||
|
|
||||||
const {tabId, frameId} = await api.frameInformationGet();
|
const {tabId, frameId} = await api.frameInformationGet();
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ async function setupGenericSettingsController(genericSettingController) {
|
|||||||
const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));
|
const statusFooter = new StatusFooter(document.querySelector('.status-footer-container'));
|
||||||
statusFooter.prepare();
|
statusFooter.prepare();
|
||||||
|
|
||||||
api.forwardLogsToBackend();
|
api.prepare();
|
||||||
await yomichan.prepare();
|
await yomichan.prepare();
|
||||||
|
|
||||||
setupEnvironmentInfo();
|
setupEnvironmentInfo();
|
||||||
|
@ -71,13 +71,13 @@ const yomichan = (() => {
|
|||||||
return this._isExtensionUnloaded;
|
return this._isExtensionUnloaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare() {
|
async prepare(isBackground=false) {
|
||||||
chrome.runtime.onMessage.addListener(this._onMessage.bind(this));
|
chrome.runtime.onMessage.addListener(this._onMessage.bind(this));
|
||||||
}
|
|
||||||
|
|
||||||
backendReady() {
|
if (!isBackground) {
|
||||||
this.sendMessage({action: 'requestBackendReadySignal'});
|
this.sendMessage({action: 'requestBackendReadySignal'});
|
||||||
return this._isBackendReadyPromise;
|
await this._isBackendReadyPromise;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ready() {
|
ready() {
|
||||||
@ -302,5 +302,3 @@ const yomichan = (() => {
|
|||||||
|
|
||||||
return new Yomichan();
|
return new Yomichan();
|
||||||
})();
|
})();
|
||||||
|
|
||||||
yomichan.prepare();
|
|
||||||
|
Loading…
Reference in New Issue
Block a user