diff --git a/frontend/src/lib/components/ApiConnectForm.svelte b/frontend/src/lib/components/ApiConnectForm.svelte
index 877a5aef08..9009899aec 100644
--- a/frontend/src/lib/components/ApiConnectForm.svelte
+++ b/frontend/src/lib/components/ApiConnectForm.svelte
@@ -5,7 +5,13 @@
type ResourceType,
type GetGlobalConnectedRepositoriesResponse
} from '$lib/gen'
- import { workspaceStore, enterpriseLicense, userWorkspaces, userStore } from '$lib/stores'
+ import {
+ workspaceStore,
+ enterpriseLicense,
+ userWorkspaces,
+ userStore,
+ workspaceColor
+ } from '$lib/stores'
import { base } from '$lib/base'
import { emptySchema, emptyString } from '$lib/utils'
import SchemaForm from './SchemaForm.svelte'
@@ -516,14 +522,10 @@
| {installation.account_id} |
- {#if $userWorkspaces.find((w) => w.id === installation.workspace_id)?.color}
+ {#if $workspaceColor}
{installation.workspace_id}
diff --git a/frontend/src/lib/components/settings/ChangeWorkspaceColor.svelte b/frontend/src/lib/components/settings/ChangeWorkspaceColor.svelte
index 1527ccc3fe..3753051eaf 100644
--- a/frontend/src/lib/components/settings/ChangeWorkspaceColor.svelte
+++ b/frontend/src/lib/components/settings/ChangeWorkspaceColor.svelte
@@ -1,5 +1,5 @@
@@ -55,10 +54,10 @@
Workspace color
- {#if savedWorkspaceColor}
+ {#if $workspaceColor}
{:else}
No color set
@@ -76,9 +75,7 @@
}}
/>
-
- Color to identify the current workspace in the list of workspaces
-
+ Color to identify the current workspace in the list of workspaces
@@ -88,12 +85,12 @@
{#if colorEnabled}
-
+
{/if}
diff --git a/frontend/src/lib/components/settings/ChangeWorkspaceName.svelte b/frontend/src/lib/components/settings/ChangeWorkspaceName.svelte
index 52b9dfb2de..1fabd3b231 100644
--- a/frontend/src/lib/components/settings/ChangeWorkspaceName.svelte
+++ b/frontend/src/lib/components/settings/ChangeWorkspaceName.svelte
@@ -6,15 +6,21 @@
import Modal from '../common/modal/Modal.svelte'
import { Pen } from 'lucide-svelte'
- let newName = ''
- let currentName = ''
+ let { open = false } = $props<{ open?: boolean }>()
+
+ let newName = $state('')
+ let currentName = $state('')
+
+ $effect(() => {
+ if ($workspaceStore) {
+ getWorkspaceName()
+ }
+ })
async function getWorkspaceName() {
currentName = await WorkspaceService.getWorkspaceName({ workspace: $workspaceStore! })
}
- getWorkspaceName()
-
async function renameWorkspace() {
open = false
await WorkspaceService.changeWorkspaceName({
@@ -28,8 +34,6 @@
newName = ''
getWorkspaceName()
}
-
- export let open = false
@@ -50,9 +54,7 @@
/>
-
- Displayable name
-
+ Displayable name
diff --git a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte
index c110f5df4f..f7e481b7cb 100644
--- a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte
+++ b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte
@@ -5,7 +5,8 @@
userStore,
userWorkspaces,
workspaceStore,
- workspaceUsageStore
+ workspaceUsageStore,
+ workspaceColor
} from '$lib/stores'
import { Building, Plus, Settings } from 'lucide-svelte'
import MenuButton from '$lib/components/sidebar/MenuButton.svelte'
@@ -61,7 +62,7 @@
icon={Building}
label={$workspaceStore ?? ''}
{isCollapsed}
- color={$userWorkspaces.find((w) => w.id === $workspaceStore)?.color}
+ color={$workspaceColor}
{trigger}
/>
@@ -153,9 +154,7 @@
>{$workspaceUsageStore}/1000 free workspace execs
{/if}
diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts
index 5168b184c4..20e48d235c 100644
--- a/frontend/src/lib/stores.ts
+++ b/frontend/src/lib/stores.ts
@@ -9,7 +9,8 @@ import {
type OperatorSettings,
type TokenResponse,
type UserWorkspaceList,
- type WorkspaceDefaultScripts
+ type WorkspaceDefaultScripts,
+ WorkspaceService
} from './gen'
import { getLocalSetting } from './utils'
@@ -202,3 +203,32 @@ export const dbSchemas = writable({})
export const instanceSettingsSelectedTab = writable('Core')
export const isCriticalAlertsUIOpen = writable(false)
+
+export const workspaceColor: Readable = derived(
+ [workspaceStore, usersWorkspaceStore, superadmin],
+ ([workspaceStore, usersWorkspaceStore, superadmin], set: (value: string | undefined) => void) => {
+ if (!workspaceStore) {
+ set(undefined)
+ return
+ }
+
+ // First try to get the color from usersWorkspaceStore
+ const color = usersWorkspaceStore?.workspaces.find((w) => w.id === workspaceStore)?.color
+
+ if (color) {
+ set(color)
+ return
+ }
+
+ // If not found and user is superadmin, try to get it from superadmin list
+ if (!superadmin) {
+ set(undefined)
+ return
+ }
+
+ WorkspaceService.listWorkspacesAsSuperAdmin().then((workspaces) => {
+ const superadminColor = workspaces.find((w) => w.id === workspaceStore)?.color
+ set(superadminColor)
+ })
+ }
+)
|