Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
![]()
4 years ago
|
export const isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
|
||
|
export const isServiceWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && self instanceof ServiceWorkerGlobalScope;
|
||
|
export const isWorker = isWebWorker || isServiceWorker;
|
||
|
|
||
|
// в SW может быть сразу две переменных TRUE, поэтому проверяю по последней
|
||
|
|
||
|
const notifyServiceWorker = (...args: any[]) => {
|
||
|
(self as any as ServiceWorkerGlobalScope)
|
||
|
.clients
|
||
|
.matchAll({ includeUncontrolled: false, type: 'window' })
|
||
|
.then((listeners) => {
|
||
|
if(!listeners.length) {
|
||
|
//console.trace('no listeners?', self, listeners);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// @ts-ignore
|
||
|
listeners[0].postMessage(...args);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
const notifyWorker = (...args: any[]) => {
|
||
|
// @ts-ignore
|
||
|
(self as any as DedicatedWorkerGlobalScope).postMessage(...args);
|
||
|
};
|
||
|
|
||
|
const empty = () => {};
|
||
|
|
||
|
export const notifySomeone = isServiceWorker ? notifyServiceWorker : (isWebWorker ? notifyWorker : empty);
|