Skip to content

Commit 0cf2cc4

Browse files
committed
fix: update Yandex
1 parent eae85ef commit 0cf2cc4

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/engines/yandex.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {v4 as uuidv4} from 'uuid';
2+
13
import {findNode} from 'utils/common';
24
import {initSearch, sendReceipt} from 'utils/engines';
35
import {targetEnv} from 'utils/config';
@@ -20,32 +22,34 @@ async function search({session, search, doc, storageIds}) {
2022

2123
// wait for search service to load
2224
await new Promise((resolve, reject) => {
25+
const eventName = uuidv4();
26+
2327
const onServiceReady = function () {
2428
window.clearTimeout(timeoutId);
2529
resolve();
2630
};
2731

2832
const timeoutId = window.setTimeout(function () {
29-
document.removeEventListener('___serviceReady', onServiceReady, {
33+
document.removeEventListener(eventName, onServiceReady, {
3034
capture: true,
3135
once: true
3236
});
3337

3438
reject(new Error('Search service is not ready'));
3539
}, 60000); // 1 minute
3640

37-
document.addEventListener('___serviceReady', onServiceReady, {
41+
document.addEventListener(eventName, onServiceReady, {
3842
capture: true,
3943
once: true
4044
});
4145

42-
function serviceObserver() {
46+
function serviceObserver(eventName) {
4347
let stop;
4448

4549
const checkService = function () {
4650
if (window.Ya?.reactBus?.e['extralinks-popup:open']?.length >= 2) {
4751
window.clearTimeout(timeoutId);
48-
document.dispatchEvent(new Event('___serviceReady'));
52+
document.dispatchEvent(new Event(eventName));
4953
} else if (!stop) {
5054
window.setTimeout(checkService, 200);
5155
}
@@ -60,9 +64,12 @@ async function search({session, search, doc, storageIds}) {
6064

6165
const script = document.createElement('script');
6266
if (['firefox', 'safari'].includes(targetEnv)) {
63-
script.nonce = document.querySelector('script[nonce]').nonce;
67+
const nonceNode = document.querySelector('script[nonce]');
68+
if (nonceNode) {
69+
script.nonce = nonceNode.nonce;
70+
}
6471
}
65-
script.textContent = `(${serviceObserver.toString()})()`;
72+
script.textContent = `(${serviceObserver.toString()})("${eventName}")`;
6673
document.documentElement.appendChild(script);
6774
script.remove();
6875
});

0 commit comments

Comments
 (0)