use getTemporaryListenerResult in other places
This commit is contained in:
parent
7928c5d713
commit
c171503d77
@ -203,12 +203,22 @@ class Popup {
|
||||
this._messageToken = await apiGetMessageToken();
|
||||
}
|
||||
|
||||
return new Promise((resolve) => {
|
||||
const popupPreparedPromise = yomichan.getTemporaryListenerResult(
|
||||
chrome.runtime.onMessage,
|
||||
({action, params}, {resolve}) => {
|
||||
if (
|
||||
action === 'popupPrepareCompleted' &&
|
||||
isObject(params) &&
|
||||
params.targetPopupId === this._id
|
||||
) {
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const parentFrameId = (typeof this._frameId === 'number' ? this._frameId : null);
|
||||
this._container.setAttribute('src', chrome.runtime.getURL('/fg/float.html'));
|
||||
this._container.addEventListener('load', () => {
|
||||
this._listenForDisplayPrepareCompleted(resolve);
|
||||
|
||||
this._invokeApi('prepare', {
|
||||
popupInfo: {
|
||||
id: this._id,
|
||||
@ -223,7 +233,8 @@ class Popup {
|
||||
this._observeFullscreen(true);
|
||||
this._onFullscreenChanged();
|
||||
this._injectStyles();
|
||||
});
|
||||
|
||||
return popupPreparedPromise;
|
||||
}
|
||||
|
||||
async _injectStyles() {
|
||||
@ -358,21 +369,6 @@ class Popup {
|
||||
contentWindow.postMessage({action, params, token}, this._targetOrigin);
|
||||
}
|
||||
|
||||
_listenForDisplayPrepareCompleted(resolve) {
|
||||
const runtimeMessageCallback = ({action, params}, sender, callback) => {
|
||||
if (
|
||||
action === 'popupPrepareCompleted' &&
|
||||
isObject(params) &&
|
||||
params.targetPopupId === this._id
|
||||
) {
|
||||
chrome.runtime.onMessage.removeListener(runtimeMessageCallback);
|
||||
callback();
|
||||
resolve();
|
||||
}
|
||||
};
|
||||
chrome.runtime.onMessage.addListener(runtimeMessageCallback);
|
||||
}
|
||||
|
||||
static _getFullscreenElement() {
|
||||
return (
|
||||
document.fullscreenElement ||
|
||||
|
@ -278,11 +278,16 @@ const yomichan = (() => {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this._isBackendPreparedResolve = null;
|
||||
this._isBackendPreparedPromise = new Promise((resolve) => (this._isBackendPreparedResolve = resolve));
|
||||
this._isBackendPreparedPromise = this.getTemporaryListenerResult(
|
||||
chrome.runtime.onMessage,
|
||||
({action}, {resolve}) => {
|
||||
if (action === 'backendPrepared') {
|
||||
resolve();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
this._messageHandlers = new Map([
|
||||
['backendPrepared', this._onBackendPrepared.bind(this)],
|
||||
['getUrl', this._onMessageGetUrl.bind(this)],
|
||||
['optionsUpdated', this._onMessageOptionsUpdated.bind(this)],
|
||||
['zoomChanged', this._onMessageZoomChanged.bind(this)]
|
||||
@ -362,10 +367,6 @@ const yomichan = (() => {
|
||||
return false;
|
||||
}
|
||||
|
||||
_onBackendPrepared() {
|
||||
this._isBackendPreparedResolve();
|
||||
}
|
||||
|
||||
_onMessageGetUrl() {
|
||||
return {url: window.location.href};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user