From f6926a15425cda8e8b8bc3ddfc37405a2197934d Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 9 May 2024 10:47:44 +1200 Subject: [PATCH] Fix peerjs navigator issue --- materialious/src/lib/SyncParty.svelte | 4 ++-- materialious/src/lib/misc.ts | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/materialious/src/lib/SyncParty.svelte b/materialious/src/lib/SyncParty.svelte index fb60da8e..7db3f1bb 100644 --- a/materialious/src/lib/SyncParty.svelte +++ b/materialious/src/lib/SyncParty.svelte @@ -33,7 +33,7 @@ const peerId = crypto.randomUUID(); setWindowQueryFlag('sync', peerId); - $syncPartyPeerStore = peerJs(peerId); + $syncPartyPeerStore = await peerJs(peerId); if ($syncPartyPeerStore) { $syncPartyPeerStore.on('connection', (conn) => { @@ -68,7 +68,7 @@ const currentUrl = get(page).url; const syncId = currentUrl.searchParams.get('sync'); if (syncId) { - $syncPartyPeerStore = peerJs(crypto.randomUUID()); + $syncPartyPeerStore = await peerJs(crypto.randomUUID()); $syncPartyPeerStore.on('open', () => { if (!$syncPartyPeerStore) return; diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts index 82f52046..a9a1cbdc 100644 --- a/materialious/src/lib/misc.ts +++ b/materialious/src/lib/misc.ts @@ -1,7 +1,7 @@ import { pushState } from '$app/navigation'; import { page } from '$app/stores'; import humanNumber from 'human-number'; -import { Peer } from 'peerjs'; +import type Peer from 'peerjs'; import { get } from 'svelte/store'; import { instanceStore } from '../store'; import type { Image } from './Api/model'; @@ -134,8 +134,13 @@ export function removeWindowQueryFlag(key: string) { pushState(currentPage.url, currentPage.state); } -export function peerJs(peerId: string): Peer { - return new Peer( +let PeerInstance: typeof Peer; +export async function peerJs(peerId: string): Promise { + // https://github.com/peers/peerjs/issues/819 + if (typeof PeerInstance === 'undefined') { + PeerInstance = (await import('peerjs')).Peer; + } + return new PeerInstance( peerId, { host: import.meta.env.VITE_DEFAULT_PEERJS_HOST || '0.peerjs.com',