diff --git a/plugins/workbench-resources/src/components/AccountPopup.svelte b/plugins/workbench-resources/src/components/AccountPopup.svelte index d48ab01aa5..74aa7c4f87 100644 --- a/plugins/workbench-resources/src/components/AccountPopup.svelte +++ b/plugins/workbench-resources/src/components/AccountPopup.svelte @@ -16,14 +16,8 @@ import contact, { Employee, EmployeeAccount, formatName } from '@hcengineering/contact' import { AccountRole, getCurrentAccount } from '@hcengineering/core' import login from '@hcengineering/login' - import { - getWorkspaces, - selectWorkspace, - Workspace, - navigateToWorkspace, - setLoginInfo - } from '@hcengineering/login-resources' - import { setMetadata, getEmbeddedLabel } from '@hcengineering/platform' + import { getWorkspaces, Workspace } from '@hcengineering/login-resources' + import { setMetadata } from '@hcengineering/platform' import { Avatar, createQuery } from '@hcengineering/presentation' import setting, { settingId, SettingsCategory } from '@hcengineering/setting' import { Action, fetchMetadataLocalStorage } from '@hcengineering/ui' @@ -38,14 +32,17 @@ locationToUrl } from '@hcengineering/ui' import view from '@hcengineering/view' - import { workbenchId } from '@hcengineering/workbench' import HelpAndSupport from './HelpAndSupport.svelte' import workbench from '../plugin' + import { onMount } from 'svelte' + import SelectWorkspaceMenu from './SelectWorkspaceMenu.svelte' let items: SettingsCategory[] = [] let workspaces: Workspace[] = [] - getWorkspaces().then((ws: Workspace[]) => (workspaces = ws)) + onMount(() => { + getWorkspaces().then((ws: Workspace[]) => (workspaces = ws)) + }) const settingsQuery = createQuery() settingsQuery.query( @@ -137,46 +134,8 @@ return actions } - function getWorkspaceItems (): Action[] { - return [ - ...workspaces.map((w) => ({ - label: getEmbeddedLabel(w.workspace), - action: async () => { - const loginInfo = (await selectWorkspace(w.workspace))[1] - navigateToWorkspace(w.workspace, loginInfo) - }, - isSubmenuRightClicking: true, - component: Menu, - props: { - actions: [ - { - label: workbench.string.OpenInNewTab, - action: async () => { - const loginInfo = (await selectWorkspace(w.workspace))[1] - - if (!loginInfo) { - return - } - setLoginInfo(loginInfo) - const url = locationToUrl({ path: [workbenchId, w.workspace] }) - window.open(url, '_blank')?.focus() - } - } - ] - } - })), - { - label: getEmbeddedLabel('...'), - action: async () => { - navigate({ path: [login.component.LoginApp, 'selectWorkspace'] }) - }, - isSubmenuRightClicking: false - } - ] - } - let actions: Action[] = [] - $: if (items && workspaces) { + $: { actions = [] const subActions: Action[] = getMenu(items, ['settings', 'settings-editor']) actions.push({ @@ -192,8 +151,8 @@ icon: setting.icon.SelectWorkspace, label: setting.string.SelectWorkspace, action: async () => {}, - component: Menu, - props: { actions: getWorkspaceItems() }, + component: SelectWorkspaceMenu, + props: { workspaces }, group: 'end' }, { diff --git a/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte b/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte new file mode 100644 index 0000000000..a251c49fa1 --- /dev/null +++ b/plugins/workbench-resources/src/components/SelectWorkspaceMenu.svelte @@ -0,0 +1,75 @@ + + + +