From e9fe595de40deca44cde1b26a5654caa6919094d Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 31 May 2023 15:08:07 +0200 Subject: [PATCH] feat: add app presence --- frontend/src/lib/components/Awareness.svelte | 19 +++ frontend/src/lib/components/Editor.svelte | 2 + .../src/lib/components/FlowBuilder.svelte | 7 +- .../src/lib/components/ScriptBuilder.svelte | 7 +- .../apps/editor/AppEditorHeader.svelte | 8 +- .../components/sidebar/MultiplayerMenu.svelte | 120 ++++++++++++++++++ frontend/src/lib/stores.ts | 1 + .../src/routes/(root)/(logged)/+layout.svelte | 16 ++- .../user/(user)/workspaces/+page.svelte | 2 +- 9 files changed, 176 insertions(+), 6 deletions(-) create mode 100644 frontend/src/lib/components/Awareness.svelte create mode 100644 frontend/src/lib/components/sidebar/MultiplayerMenu.svelte diff --git a/frontend/src/lib/components/Awareness.svelte b/frontend/src/lib/components/Awareness.svelte new file mode 100644 index 0000000000..8923983c5f --- /dev/null +++ b/frontend/src/lib/components/Awareness.svelte @@ -0,0 +1,19 @@ + + +
+ {#each Object.entries($awarenessStore ?? {}).filter(([a, b]) => b == url && a != $userStore?.username) as [user, _]} + + {user.substring(0, 2).toLocaleUpperCase()} + + {/each} +
diff --git a/frontend/src/lib/components/Editor.svelte b/frontend/src/lib/components/Editor.svelte index 886dcca4e9..3f7b37a624 100644 --- a/frontend/src/lib/components/Editor.svelte +++ b/frontend/src/lib/components/Editor.svelte @@ -210,7 +210,9 @@ }) } catch (e) { console.log('initServices failed', e.message) + return } + function createLanguageClient( transports: MessageTransports, name: string, diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index ae1c4da00a..fb1a01beeb 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -1,7 +1,7 @@ + + + + +
+
+ {#each Object.entries($awarenessStore ?? {}) as [user, url]} +
+ + {user.substring(0, 2).toLocaleUpperCase()} + +
+ {user} + {showActivity(url)} +
+
+ {/each} +
+
+
diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts index bd9d6ca3aa..ced46e3503 100644 --- a/frontend/src/lib/stores.ts +++ b/frontend/src/lib/stores.ts @@ -18,6 +18,7 @@ export interface UserExt { const persistedWorkspace = BROWSER && localStorage.getItem('workspace') +export const awarenessStore = writable>(undefined) export const enterpriseLicense = writable(undefined) export const workerTags = writable(undefined) export const usageStore = writable(0) diff --git a/frontend/src/routes/(root)/(logged)/+layout.svelte b/frontend/src/routes/(root)/(logged)/+layout.svelte index e915fae012..da4b55edf7 100644 --- a/frontend/src/routes/(root)/(logged)/+layout.svelte +++ b/frontend/src/routes/(root)/(logged)/+layout.svelte @@ -16,7 +16,14 @@ import WorkspaceMenu from '$lib/components/sidebar/WorkspaceMenu.svelte' import SidebarContent from '$lib/components/sidebar/SidebarContent.svelte' - import { starStore, superadmin, usageStore, userStore, workspaceStore } from '$lib/stores' + import { + enterpriseLicense, + starStore, + superadmin, + usageStore, + userStore, + workspaceStore + } from '$lib/stores' import CenteredModal from '$lib/components/CenteredModal.svelte' import { afterNavigate, beforeNavigate, goto } from '$app/navigation' import UserSettings from '$lib/components/UserSettings.svelte' @@ -26,6 +33,7 @@ import FavoriteMenu from '$lib/components/sidebar/FavoriteMenu.svelte' import { SUPERADMIN_SETTINGS_HASH, USER_SETTINGS_HASH } from '$lib/components/sidebar/settings' import { isCloudHosted } from '$lib/cloud' + import MultiplayerMenu from '$lib/components/sidebar/MultiplayerMenu.svelte' OpenAPI.WITH_CREDENTIALS = true let menuOpen = false @@ -215,6 +223,9 @@ + {#if $enterpriseLicense} + + {/if} @@ -251,6 +262,9 @@ + {#if $enterpriseLicense} + + {/if} diff --git a/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte b/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte index 36e3ca235f..37a364e5d1 100644 --- a/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte @@ -71,7 +71,7 @@ workspaces = $userWorkspaces } } - $: list_all_as_super_admin != undefined && handleListWorkspaces() + $: list_all_as_super_admin != undefined && $userWorkspaces && handleListWorkspaces() $: adminsInstance = workspaces?.find((x) => x.id == 'admins')