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