From 8c1f6ccc5d22e657a83831eb5f37a9516cdec10a Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 19 May 2026 07:30:27 +0000 Subject: [PATCH] fix: prevent undefined user flickering in multiplayer presence list (#9231) --- .../components/sidebar/MultiplayerMenu.svelte | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/frontend/src/lib/components/sidebar/MultiplayerMenu.svelte b/frontend/src/lib/components/sidebar/MultiplayerMenu.svelte index 8697469940..40405c9fe5 100644 --- a/frontend/src/lib/components/sidebar/MultiplayerMenu.svelte +++ b/frontend/src/lib/components/sidebar/MultiplayerMenu.svelte @@ -15,6 +15,14 @@ let wsProvider: WebsocketProvider | undefined = undefined let connected = $state(false) + + function updateLocalState() { + if (!awareness || !$userStore?.username) return + awareness.setLocalState({ + name: $userStore.username, + url: $page.url.pathname + }) + } async function connectWorkspace(workspace: string) { let token: string | undefined try { @@ -34,15 +42,14 @@ awareness = wsProvider.awareness - awareness?.setLocalState({ - name: $userStore?.username, - url: $page.url.pathname - }) + updateLocalState() function setPeers() { if (!awareness) return $awarenessStore = Object.fromEntries( - Array.from(awareness.getStates().values()).map((x) => [x.name, x.url]) + Array.from(awareness.getStates().values()) + .filter((x) => x.name) + .map((x) => [x.name, x.url]) ) } @@ -53,15 +60,18 @@ }) } run(() => { - awareness?.setLocalState({ - name: $userStore?.username, - url: $page.url.pathname - }) + updateLocalState() }) run(() => { $enterpriseLicense && $workspaceStore && connectWorkspace($workspaceStore) }) + let peers = $derived( + Object.entries($awarenessStore ?? {}).filter( + ([user]) => user && user !== 'undefined' && user !== 'null' + ) + ) + function showActivity(url: string) { if (url.startsWith('/scripts/add')) { return 'Creating a script' @@ -97,7 +107,7 @@
Live activity
- {#each Object.entries($awarenessStore ?? {}) as [user, url]} + {#each peers as [user, url] (user)}