Skip to content

Commit

Permalink
Wait for service woker is registered
Browse files Browse the repository at this point in the history
  • Loading branch information
ed-asriyan committed Apr 26, 2024
1 parent 53b8864 commit a23ebb2
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 21 deletions.
5 changes: 1 addition & 4 deletions src/components/video-player/player-magnet.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@
import type { Link } from '../normalize-link';
import Loader from '../loader.svelte';
import { getStreamUrl } from '../../stores/web-torrent';
import { sleep } from '../../utils';
import VideoPlayerNative from './video-player-native.svelte';
import VideoSelectorBtn from '../video-selector-btn.svelte';
export let link: Link;
export let currentTime: number;
export let paused: boolean;
export let muted: boolean;
const sleep = function(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms));
};
</script>

{#if !navigator.serviceWorker}
Expand Down
26 changes: 9 additions & 17 deletions src/stores/web-torrent.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { iceServers, webTorrentTrackers } from '../settings';
import { readable, writable } from 'svelte/store';
import { iceServers, webTorrentTrackers } from '../settings';
import { sleep } from '../utils';

// @ts-ignore
window.WEBTORRENT_ANNOUNCE = null;
Expand All @@ -12,25 +13,16 @@ const initWebtorrent = async function () {
return;
}

const reg = await navigator.serviceWorker.register('/sw.min.js');
const worker = reg.active || reg.waiting || reg.installing as ServiceWorker;
await navigator.serviceWorker.register('/sw.min.js');
await navigator.serviceWorker.ready;

await new Promise<void>(resolve => {
function checkState (worker: any): boolean {
return worker.state === 'activated';
}
if (!checkState(worker)) {
worker.addEventListener('statechange', ({ target }) => {
if (checkState(target)) {
isInitiated = true;
resolve();
}
});
while (true) {
if ((await navigator.serviceWorker.getRegistration())?.active?.state === 'activated') {
return;
} else {
isInitiated = true;
resolve();
await sleep(1000);
}
});
}
};

const promise = async function (obj: any, f: any, ...arg: any) {
Expand Down
3 changes: 3 additions & 0 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ export const randomStr = function (length: number): string {
return result;
};

export const sleep = function(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms));
};

0 comments on commit a23ebb2

Please sign in to comment.