From 631d4849011a36e7c53b073f3f013f990812e713 Mon Sep 17 00:00:00 2001 From: Simula_r <18093452+simula-r@users.noreply.github.com> Date: Tue, 17 Feb 2026 12:28:47 -0800 Subject: [PATCH] refactor: workspaces DDD (#8921) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Refactor: workspaces related functionality into DDD structure. Note: this is the 1st PR of 2 more refactoring. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8921-refactor-DDD-3096d73d3650812bb7f6eb955f042663) by [Unito](https://www.unito.io) --- src/components/topbar/CurrentUserButton.vue | 5 +++-- src/composables/billing/useBillingContext.ts | 2 +- .../components/SubscriptionPanel.vue | 2 +- .../composables/useSubscriptionDialog.ts | 2 +- .../settings/composables/useSettingUI.ts | 2 +- .../workspace}/auth/WorkspaceAuthGate.test.ts | 0 .../workspace}/auth/WorkspaceAuthGate.vue | 0 .../CurrentUserPopoverWorkspace.vue | 4 ++-- .../components/PricingTableWorkspace.vue | 0 .../SubscriptionAddPaymentPreviewWorkspace.vue | 0 .../SubscriptionPanelContentWorkspace.vue | 2 +- ...scriptionRequiredDialogContentWorkspace.vue | 2 +- .../SubscriptionTransitionPreviewWorkspace.vue | 0 .../TopUpCreditsDialogContentWorkspace.vue | 2 +- .../components}/WorkspaceProfilePic.vue | 0 .../components}/WorkspaceSwitcherPopover.vue | 4 ++-- .../dialogs}/CreateWorkspaceDialogContent.vue | 0 .../dialogs}/DeleteWorkspaceDialogContent.vue | 0 .../dialogs}/EditWorkspaceDialogContent.vue | 0 .../dialogs}/InviteMemberDialogContent.vue | 0 .../InviteMemberUpsellDialogContent.vue | 0 .../dialogs}/LeaveWorkspaceDialogContent.vue | 0 .../dialogs}/RemoveMemberDialogContent.vue | 0 .../dialogs}/RevokeInviteDialogContent.vue | 0 .../dialogs/settings}/MembersPanelContent.vue | 0 .../settings}/WorkspacePanelContent.vue | 6 +++--- .../components/toasts}/InviteAcceptedToast.vue | 2 +- .../composables}/useWorkspaceBilling.ts | 2 +- .../composables}/useWorkspaceSwitch.test.ts | 2 +- .../composables}/useWorkspaceSwitch.ts | 0 .../stores/billingOperationStore.test.ts | 0 .../workspace}/stores/billingOperationStore.ts | 0 .../stores/teamWorkspaceStore.test.ts | 2 +- .../workspace/stores/teamWorkspaceStore.ts | 4 ++-- .../stores}/useWorkspaceAuth.test.ts | 4 ++-- .../workspace}/stores/workspaceAuthStore.ts | 4 ++-- .../{auth => }/workspace/workspaceConstants.ts | 0 .../{auth => }/workspace/workspaceTypes.ts | 0 src/services/dialogService.ts | 18 +++++++++--------- src/stores/firebaseAuthStore.ts | 2 +- src/views/GraphView.vue | 2 +- src/views/layouts/LayoutDefault.vue | 2 +- 42 files changed, 39 insertions(+), 38 deletions(-) rename src/{components => platform/workspace}/auth/WorkspaceAuthGate.test.ts (100%) rename src/{components => platform/workspace}/auth/WorkspaceAuthGate.vue (100%) rename src/{components/topbar => platform/workspace/components}/CurrentUserPopoverWorkspace.vue (98%) rename src/platform/{cloud/subscription => workspace}/components/PricingTableWorkspace.vue (100%) rename src/platform/{cloud/subscription => workspace}/components/SubscriptionAddPaymentPreviewWorkspace.vue (100%) rename src/platform/{cloud/subscription => workspace}/components/SubscriptionPanelContentWorkspace.vue (99%) rename src/platform/{cloud/subscription => workspace}/components/SubscriptionRequiredDialogContentWorkspace.vue (98%) rename src/platform/{cloud/subscription => workspace}/components/SubscriptionTransitionPreviewWorkspace.vue (100%) rename src/{components/dialog/content => platform/workspace/components}/TopUpCreditsDialogContentWorkspace.vue (98%) rename src/{components/common => platform/workspace/components}/WorkspaceProfilePic.vue (100%) rename src/{components/topbar => platform/workspace/components}/WorkspaceSwitcherPopover.vue (97%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/CreateWorkspaceDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/DeleteWorkspaceDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/EditWorkspaceDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/InviteMemberDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/InviteMemberUpsellDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/LeaveWorkspaceDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/RemoveMemberDialogContent.vue (100%) rename src/{components/dialog/content/workspace => platform/workspace/components/dialogs}/RevokeInviteDialogContent.vue (100%) rename src/{components/dialog/content/setting => platform/workspace/components/dialogs/settings}/MembersPanelContent.vue (100%) rename src/{components/dialog/content/setting => platform/workspace/components/dialogs/settings}/WorkspacePanelContent.vue (96%) rename src/{components/toast => platform/workspace/components/toasts}/InviteAcceptedToast.vue (93%) rename src/{composables/billing => platform/workspace/composables}/useWorkspaceBilling.ts (99%) rename src/platform/{auth/workspace => workspace/composables}/useWorkspaceSwitch.test.ts (98%) rename src/platform/{auth/workspace => workspace/composables}/useWorkspaceSwitch.ts (100%) rename src/{ => platform/workspace}/stores/billingOperationStore.test.ts (100%) rename src/{ => platform/workspace}/stores/billingOperationStore.ts (100%) rename src/platform/{auth/workspace => workspace/stores}/useWorkspaceAuth.test.ts (99%) rename src/{ => platform/workspace}/stores/workspaceAuthStore.ts (98%) rename src/platform/{auth => }/workspace/workspaceConstants.ts (100%) rename src/platform/{auth => }/workspace/workspaceTypes.ts (100%) diff --git a/src/components/topbar/CurrentUserButton.vue b/src/components/topbar/CurrentUserButton.vue index 25e1c3eb3e..b1986de9ba 100644 --- a/src/components/topbar/CurrentUserButton.vue +++ b/src/components/topbar/CurrentUserButton.vue @@ -69,7 +69,7 @@ import Skeleton from 'primevue/skeleton' import { computed, defineAsyncComponent, ref } from 'vue' import UserAvatar from '@/components/common/UserAvatar.vue' -import WorkspaceProfilePic from '@/components/common/WorkspaceProfilePic.vue' +import WorkspaceProfilePic from '@/platform/workspace/components/WorkspaceProfilePic.vue' import Button from '@/components/ui/button/Button.vue' import { useCurrentUser } from '@/composables/auth/useCurrentUser' import { useFeatureFlags } from '@/composables/useFeatureFlags' @@ -80,7 +80,8 @@ import { cn } from '@/utils/tailwindUtil' import CurrentUserPopoverLegacy from './CurrentUserPopoverLegacy.vue' const CurrentUserPopoverWorkspace = defineAsyncComponent( - () => import('./CurrentUserPopoverWorkspace.vue') + () => + import('../../platform/workspace/components/CurrentUserPopoverWorkspace.vue') ) const { showArrow = true, compact = false } = defineProps<{ diff --git a/src/composables/billing/useBillingContext.ts b/src/composables/billing/useBillingContext.ts index 4fe8f37b07..05d2e93658 100644 --- a/src/composables/billing/useBillingContext.ts +++ b/src/composables/billing/useBillingContext.ts @@ -18,7 +18,7 @@ import type { SubscriptionInfo } from './types' import { useLegacyBilling } from './useLegacyBilling' -import { useWorkspaceBilling } from './useWorkspaceBilling' +import { useWorkspaceBilling } from '@/platform/workspace/composables/useWorkspaceBilling' /** * Unified billing context that automatically switches between legacy (user-scoped) diff --git a/src/platform/cloud/subscription/components/SubscriptionPanel.vue b/src/platform/cloud/subscription/components/SubscriptionPanel.vue index 32d8c0a4b6..eece4d6442 100644 --- a/src/platform/cloud/subscription/components/SubscriptionPanel.vue +++ b/src/platform/cloud/subscription/components/SubscriptionPanel.vue @@ -80,7 +80,7 @@ import { isCloud } from '@/platform/distribution/types' const SubscriptionPanelContentWorkspace = defineAsyncComponent( () => - import('@/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue') + import('@/platform/workspace/components/SubscriptionPanelContentWorkspace.vue') ) const { flags } = useFeatureFlags() diff --git a/src/platform/cloud/subscription/composables/useSubscriptionDialog.ts b/src/platform/cloud/subscription/composables/useSubscriptionDialog.ts index 195d663e82..abe367985f 100644 --- a/src/platform/cloud/subscription/composables/useSubscriptionDialog.ts +++ b/src/platform/cloud/subscription/composables/useSubscriptionDialog.ts @@ -23,7 +23,7 @@ export const useSubscriptionDialog = () => { const component = useWorkspaceVariant ? defineAsyncComponent( () => - import('@/platform/cloud/subscription/components/SubscriptionRequiredDialogContentWorkspace.vue') + import('@/platform/workspace/components/SubscriptionRequiredDialogContentWorkspace.vue') ) : defineAsyncComponent( () => diff --git a/src/platform/settings/composables/useSettingUI.ts b/src/platform/settings/composables/useSettingUI.ts index 21d95b3d52..93be00bc36 100644 --- a/src/platform/settings/composables/useSettingUI.ts +++ b/src/platform/settings/composables/useSettingUI.ts @@ -177,7 +177,7 @@ export function useSettingUI( }, component: defineAsyncComponent( () => - import('@/components/dialog/content/setting/WorkspacePanelContent.vue') + import('@/platform/workspace/components/dialogs/settings/WorkspacePanelContent.vue') ) } diff --git a/src/components/auth/WorkspaceAuthGate.test.ts b/src/platform/workspace/auth/WorkspaceAuthGate.test.ts similarity index 100% rename from src/components/auth/WorkspaceAuthGate.test.ts rename to src/platform/workspace/auth/WorkspaceAuthGate.test.ts diff --git a/src/components/auth/WorkspaceAuthGate.vue b/src/platform/workspace/auth/WorkspaceAuthGate.vue similarity index 100% rename from src/components/auth/WorkspaceAuthGate.vue rename to src/platform/workspace/auth/WorkspaceAuthGate.vue diff --git a/src/components/topbar/CurrentUserPopoverWorkspace.vue b/src/platform/workspace/components/CurrentUserPopoverWorkspace.vue similarity index 98% rename from src/components/topbar/CurrentUserPopoverWorkspace.vue rename to src/platform/workspace/components/CurrentUserPopoverWorkspace.vue index f8ddf147b0..5afd0cc8a1 100644 --- a/src/components/topbar/CurrentUserPopoverWorkspace.vue +++ b/src/platform/workspace/components/CurrentUserPopoverWorkspace.vue @@ -207,8 +207,8 @@ import { useI18n } from 'vue-i18n' import { formatCreditsFromCents } from '@/base/credits/comfyCredits' import UserAvatar from '@/components/common/UserAvatar.vue' -import WorkspaceProfilePic from '@/components/common/WorkspaceProfilePic.vue' -import WorkspaceSwitcherPopover from '@/components/topbar/WorkspaceSwitcherPopover.vue' +import WorkspaceProfilePic from '@/platform/workspace/components/WorkspaceProfilePic.vue' +import WorkspaceSwitcherPopover from '@/platform/workspace/components/WorkspaceSwitcherPopover.vue' import Button from '@/components/ui/button/Button.vue' import { useCurrentUser } from '@/composables/auth/useCurrentUser' diff --git a/src/platform/cloud/subscription/components/PricingTableWorkspace.vue b/src/platform/workspace/components/PricingTableWorkspace.vue similarity index 100% rename from src/platform/cloud/subscription/components/PricingTableWorkspace.vue rename to src/platform/workspace/components/PricingTableWorkspace.vue diff --git a/src/platform/cloud/subscription/components/SubscriptionAddPaymentPreviewWorkspace.vue b/src/platform/workspace/components/SubscriptionAddPaymentPreviewWorkspace.vue similarity index 100% rename from src/platform/cloud/subscription/components/SubscriptionAddPaymentPreviewWorkspace.vue rename to src/platform/workspace/components/SubscriptionAddPaymentPreviewWorkspace.vue diff --git a/src/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue b/src/platform/workspace/components/SubscriptionPanelContentWorkspace.vue similarity index 99% rename from src/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue rename to src/platform/workspace/components/SubscriptionPanelContentWorkspace.vue index 5038c340f0..a080209875 100644 --- a/src/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue +++ b/src/platform/workspace/components/SubscriptionPanelContentWorkspace.vue @@ -357,7 +357,7 @@ import { useToast } from 'primevue/usetoast' import StatusBadge from '@/components/common/StatusBadge.vue' import Button from '@/components/ui/button/Button.vue' import { useBillingContext } from '@/composables/billing/useBillingContext' -import { useBillingOperationStore } from '@/stores/billingOperationStore' +import { useBillingOperationStore } from '@/platform/workspace/stores/billingOperationStore' import { useSubscriptionActions } from '@/platform/cloud/subscription/composables/useSubscriptionActions' import { useSubscriptionCredits } from '@/platform/cloud/subscription/composables/useSubscriptionCredits' import { workspaceApi } from '@/platform/workspace/api/workspaceApi' diff --git a/src/platform/cloud/subscription/components/SubscriptionRequiredDialogContentWorkspace.vue b/src/platform/workspace/components/SubscriptionRequiredDialogContentWorkspace.vue similarity index 98% rename from src/platform/cloud/subscription/components/SubscriptionRequiredDialogContentWorkspace.vue rename to src/platform/workspace/components/SubscriptionRequiredDialogContentWorkspace.vue index 2f3ba00cda..5c49fa8a1e 100644 --- a/src/platform/cloud/subscription/components/SubscriptionRequiredDialogContentWorkspace.vue +++ b/src/platform/workspace/components/SubscriptionRequiredDialogContentWorkspace.vue @@ -74,7 +74,7 @@ import type { TierKey } from '@/platform/cloud/subscription/constants/tierPricin import type { BillingCycle } from '@/platform/cloud/subscription/utils/subscriptionTierRank' import type { PreviewSubscribeResponse } from '@/platform/workspace/api/workspaceApi' import { workspaceApi } from '@/platform/workspace/api/workspaceApi' -import { useBillingOperationStore } from '@/stores/billingOperationStore' +import { useBillingOperationStore } from '@/platform/workspace/stores/billingOperationStore' import PricingTableWorkspace from './PricingTableWorkspace.vue' import SubscriptionAddPaymentPreviewWorkspace from './SubscriptionAddPaymentPreviewWorkspace.vue' diff --git a/src/platform/cloud/subscription/components/SubscriptionTransitionPreviewWorkspace.vue b/src/platform/workspace/components/SubscriptionTransitionPreviewWorkspace.vue similarity index 100% rename from src/platform/cloud/subscription/components/SubscriptionTransitionPreviewWorkspace.vue rename to src/platform/workspace/components/SubscriptionTransitionPreviewWorkspace.vue diff --git a/src/components/dialog/content/TopUpCreditsDialogContentWorkspace.vue b/src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue similarity index 98% rename from src/components/dialog/content/TopUpCreditsDialogContentWorkspace.vue rename to src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue index e01664b9ad..d6ac6ad23f 100644 --- a/src/components/dialog/content/TopUpCreditsDialogContentWorkspace.vue +++ b/src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue @@ -162,7 +162,7 @@ import { useTelemetry } from '@/platform/telemetry' import { clearTopupTracking } from '@/platform/telemetry/topupTracker' import { workspaceApi } from '@/platform/workspace/api/workspaceApi' import { useSettingsDialog } from '@/platform/settings/composables/useSettingsDialog' -import { useBillingOperationStore } from '@/stores/billingOperationStore' +import { useBillingOperationStore } from '@/platform/workspace/stores/billingOperationStore' import { useDialogStore } from '@/stores/dialogStore' import { cn } from '@/utils/tailwindUtil' diff --git a/src/components/common/WorkspaceProfilePic.vue b/src/platform/workspace/components/WorkspaceProfilePic.vue similarity index 100% rename from src/components/common/WorkspaceProfilePic.vue rename to src/platform/workspace/components/WorkspaceProfilePic.vue diff --git a/src/components/topbar/WorkspaceSwitcherPopover.vue b/src/platform/workspace/components/WorkspaceSwitcherPopover.vue similarity index 97% rename from src/components/topbar/WorkspaceSwitcherPopover.vue rename to src/platform/workspace/components/WorkspaceSwitcherPopover.vue index ff75509140..24a17693bf 100644 --- a/src/components/topbar/WorkspaceSwitcherPopover.vue +++ b/src/platform/workspace/components/WorkspaceSwitcherPopover.vue @@ -112,9 +112,9 @@ import { storeToRefs } from 'pinia' import { computed } from 'vue' import { useI18n } from 'vue-i18n' -import WorkspaceProfilePic from '@/components/common/WorkspaceProfilePic.vue' +import WorkspaceProfilePic from '@/platform/workspace/components/WorkspaceProfilePic.vue' import { useBillingContext } from '@/composables/billing/useBillingContext' -import { useWorkspaceSwitch } from '@/platform/auth/workspace/useWorkspaceSwitch' +import { useWorkspaceSwitch } from '@/platform/workspace/composables/useWorkspaceSwitch' import type { SubscriptionTier, WorkspaceRole, diff --git a/src/components/dialog/content/workspace/CreateWorkspaceDialogContent.vue b/src/platform/workspace/components/dialogs/CreateWorkspaceDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/CreateWorkspaceDialogContent.vue rename to src/platform/workspace/components/dialogs/CreateWorkspaceDialogContent.vue diff --git a/src/components/dialog/content/workspace/DeleteWorkspaceDialogContent.vue b/src/platform/workspace/components/dialogs/DeleteWorkspaceDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/DeleteWorkspaceDialogContent.vue rename to src/platform/workspace/components/dialogs/DeleteWorkspaceDialogContent.vue diff --git a/src/components/dialog/content/workspace/EditWorkspaceDialogContent.vue b/src/platform/workspace/components/dialogs/EditWorkspaceDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/EditWorkspaceDialogContent.vue rename to src/platform/workspace/components/dialogs/EditWorkspaceDialogContent.vue diff --git a/src/components/dialog/content/workspace/InviteMemberDialogContent.vue b/src/platform/workspace/components/dialogs/InviteMemberDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/InviteMemberDialogContent.vue rename to src/platform/workspace/components/dialogs/InviteMemberDialogContent.vue diff --git a/src/components/dialog/content/workspace/InviteMemberUpsellDialogContent.vue b/src/platform/workspace/components/dialogs/InviteMemberUpsellDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/InviteMemberUpsellDialogContent.vue rename to src/platform/workspace/components/dialogs/InviteMemberUpsellDialogContent.vue diff --git a/src/components/dialog/content/workspace/LeaveWorkspaceDialogContent.vue b/src/platform/workspace/components/dialogs/LeaveWorkspaceDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/LeaveWorkspaceDialogContent.vue rename to src/platform/workspace/components/dialogs/LeaveWorkspaceDialogContent.vue diff --git a/src/components/dialog/content/workspace/RemoveMemberDialogContent.vue b/src/platform/workspace/components/dialogs/RemoveMemberDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/RemoveMemberDialogContent.vue rename to src/platform/workspace/components/dialogs/RemoveMemberDialogContent.vue diff --git a/src/components/dialog/content/workspace/RevokeInviteDialogContent.vue b/src/platform/workspace/components/dialogs/RevokeInviteDialogContent.vue similarity index 100% rename from src/components/dialog/content/workspace/RevokeInviteDialogContent.vue rename to src/platform/workspace/components/dialogs/RevokeInviteDialogContent.vue diff --git a/src/components/dialog/content/setting/MembersPanelContent.vue b/src/platform/workspace/components/dialogs/settings/MembersPanelContent.vue similarity index 100% rename from src/components/dialog/content/setting/MembersPanelContent.vue rename to src/platform/workspace/components/dialogs/settings/MembersPanelContent.vue diff --git a/src/components/dialog/content/setting/WorkspacePanelContent.vue b/src/platform/workspace/components/dialogs/settings/WorkspacePanelContent.vue similarity index 96% rename from src/components/dialog/content/setting/WorkspacePanelContent.vue rename to src/platform/workspace/components/dialogs/settings/WorkspacePanelContent.vue index f3c45acb8e..bd817eda3c 100644 --- a/src/components/dialog/content/setting/WorkspacePanelContent.vue +++ b/src/platform/workspace/components/dialogs/settings/WorkspacePanelContent.vue @@ -120,12 +120,12 @@ import { useI18n } from 'vue-i18n' import { TabsContent, TabsList, TabsRoot, TabsTrigger } from 'reka-ui' -import WorkspaceProfilePic from '@/components/common/WorkspaceProfilePic.vue' -import MembersPanelContent from '@/components/dialog/content/setting/MembersPanelContent.vue' +import WorkspaceProfilePic from '@/platform/workspace/components/WorkspaceProfilePic.vue' +import MembersPanelContent from '@/platform/workspace/components/dialogs/settings/MembersPanelContent.vue' import Button from '@/components/ui/button/Button.vue' import { useBillingContext } from '@/composables/billing/useBillingContext' import { TIER_TO_KEY } from '@/platform/cloud/subscription/constants/tierPricing' -import SubscriptionPanelContentWorkspace from '@/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue' +import SubscriptionPanelContentWorkspace from '@/platform/workspace/components/SubscriptionPanelContentWorkspace.vue' import { useWorkspaceUI } from '@/platform/workspace/composables/useWorkspaceUI' import { useTeamWorkspaceStore } from '@/platform/workspace/stores/teamWorkspaceStore' import { useDialogService } from '@/services/dialogService' diff --git a/src/components/toast/InviteAcceptedToast.vue b/src/platform/workspace/components/toasts/InviteAcceptedToast.vue similarity index 93% rename from src/components/toast/InviteAcceptedToast.vue rename to src/platform/workspace/components/toasts/InviteAcceptedToast.vue index da43ce5ed1..622dbf112e 100644 --- a/src/components/toast/InviteAcceptedToast.vue +++ b/src/platform/workspace/components/toasts/InviteAcceptedToast.vue @@ -29,7 +29,7 @@ import Toast from 'primevue/toast' import { useI18n } from 'vue-i18n' import Button from '@/components/ui/button/Button.vue' -import { useWorkspaceSwitch } from '@/platform/auth/workspace/useWorkspaceSwitch' +import { useWorkspaceSwitch } from '@/platform/workspace/composables/useWorkspaceSwitch' const { t } = useI18n() const toast = useToast() diff --git a/src/composables/billing/useWorkspaceBilling.ts b/src/platform/workspace/composables/useWorkspaceBilling.ts similarity index 99% rename from src/composables/billing/useWorkspaceBilling.ts rename to src/platform/workspace/composables/useWorkspaceBilling.ts index 368e80277e..100141103d 100644 --- a/src/composables/billing/useWorkspaceBilling.ts +++ b/src/platform/workspace/composables/useWorkspaceBilling.ts @@ -16,7 +16,7 @@ import type { BillingActions, BillingState, SubscriptionInfo -} from './types' +} from '../../../composables/billing/types' /** * Adapter for workspace-scoped billing via /billing/* endpoints. diff --git a/src/platform/auth/workspace/useWorkspaceSwitch.test.ts b/src/platform/workspace/composables/useWorkspaceSwitch.test.ts similarity index 98% rename from src/platform/auth/workspace/useWorkspaceSwitch.test.ts rename to src/platform/workspace/composables/useWorkspaceSwitch.test.ts index 6cc03049dd..b3a76bcafc 100644 --- a/src/platform/auth/workspace/useWorkspaceSwitch.test.ts +++ b/src/platform/workspace/composables/useWorkspaceSwitch.test.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { useWorkspaceSwitch } from '@/platform/auth/workspace/useWorkspaceSwitch' +import { useWorkspaceSwitch } from '@/platform/workspace/composables/useWorkspaceSwitch' import type { WorkspaceWithRole } from '@/platform/workspace/api/workspaceApi' const mockSwitchWorkspace = vi.hoisted(() => vi.fn()) diff --git a/src/platform/auth/workspace/useWorkspaceSwitch.ts b/src/platform/workspace/composables/useWorkspaceSwitch.ts similarity index 100% rename from src/platform/auth/workspace/useWorkspaceSwitch.ts rename to src/platform/workspace/composables/useWorkspaceSwitch.ts diff --git a/src/stores/billingOperationStore.test.ts b/src/platform/workspace/stores/billingOperationStore.test.ts similarity index 100% rename from src/stores/billingOperationStore.test.ts rename to src/platform/workspace/stores/billingOperationStore.test.ts diff --git a/src/stores/billingOperationStore.ts b/src/platform/workspace/stores/billingOperationStore.ts similarity index 100% rename from src/stores/billingOperationStore.ts rename to src/platform/workspace/stores/billingOperationStore.ts diff --git a/src/platform/workspace/stores/teamWorkspaceStore.test.ts b/src/platform/workspace/stores/teamWorkspaceStore.test.ts index 2c29bfd3c8..0baf59288e 100644 --- a/src/platform/workspace/stores/teamWorkspaceStore.test.ts +++ b/src/platform/workspace/stores/teamWorkspaceStore.test.ts @@ -25,7 +25,7 @@ const mockWorkspaceAuthStore = vi.hoisted(() => ({ clearWorkspaceContext: vi.fn() })) -vi.mock('@/stores/workspaceAuthStore', () => ({ +vi.mock('@/platform/workspace/stores/workspaceAuthStore', () => ({ useWorkspaceAuthStore: () => mockWorkspaceAuthStore })) diff --git a/src/platform/workspace/stores/teamWorkspaceStore.ts b/src/platform/workspace/stores/teamWorkspaceStore.ts index acc69acad3..27e4e1ee6c 100644 --- a/src/platform/workspace/stores/teamWorkspaceStore.ts +++ b/src/platform/workspace/stores/teamWorkspaceStore.ts @@ -1,10 +1,10 @@ import { defineStore } from 'pinia' import { computed, ref, shallowRef } from 'vue' -import { WORKSPACE_STORAGE_KEYS } from '@/platform/auth/workspace/workspaceConstants' +import { WORKSPACE_STORAGE_KEYS } from '@/platform/workspace/workspaceConstants' import { clearPreservedQuery } from '@/platform/navigation/preservedQueryManager' import { PRESERVED_QUERY_NAMESPACES } from '@/platform/navigation/preservedQueryNamespaces' -import { useWorkspaceAuthStore } from '@/stores/workspaceAuthStore' +import { useWorkspaceAuthStore } from '@/platform/workspace/stores/workspaceAuthStore' import type { ListMembersParams, diff --git a/src/platform/auth/workspace/useWorkspaceAuth.test.ts b/src/platform/workspace/stores/useWorkspaceAuth.test.ts similarity index 99% rename from src/platform/auth/workspace/useWorkspaceAuth.test.ts rename to src/platform/workspace/stores/useWorkspaceAuth.test.ts index ca8152d164..b1da96efd2 100644 --- a/src/platform/auth/workspace/useWorkspaceAuth.test.ts +++ b/src/platform/workspace/stores/useWorkspaceAuth.test.ts @@ -4,9 +4,9 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { useWorkspaceAuthStore, WorkspaceAuthError -} from '@/stores/workspaceAuthStore' +} from '@/platform/workspace/stores/workspaceAuthStore' -import { WORKSPACE_STORAGE_KEYS } from './workspaceConstants' +import { WORKSPACE_STORAGE_KEYS } from '@/platform/workspace/workspaceConstants' const mockGetIdToken = vi.fn() diff --git a/src/stores/workspaceAuthStore.ts b/src/platform/workspace/stores/workspaceAuthStore.ts similarity index 98% rename from src/stores/workspaceAuthStore.ts rename to src/platform/workspace/stores/workspaceAuthStore.ts index a55399399f..e2083f4bd2 100644 --- a/src/stores/workspaceAuthStore.ts +++ b/src/platform/workspace/stores/workspaceAuthStore.ts @@ -7,11 +7,11 @@ import { t } from '@/i18n' import { TOKEN_REFRESH_BUFFER_MS, WORKSPACE_STORAGE_KEYS -} from '@/platform/auth/workspace/workspaceConstants' +} from '@/platform/workspace/workspaceConstants' import { api } from '@/scripts/api' import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' import type { AuthHeader } from '@/types/authTypes' -import type { WorkspaceWithRole } from '@/platform/auth/workspace/workspaceTypes' +import type { WorkspaceWithRole } from '@/platform/workspace/workspaceTypes' import { useFeatureFlags } from '@/composables/useFeatureFlags' const WorkspaceWithRoleSchema = z.object({ diff --git a/src/platform/auth/workspace/workspaceConstants.ts b/src/platform/workspace/workspaceConstants.ts similarity index 100% rename from src/platform/auth/workspace/workspaceConstants.ts rename to src/platform/workspace/workspaceConstants.ts diff --git a/src/platform/auth/workspace/workspaceTypes.ts b/src/platform/workspace/workspaceTypes.ts similarity index 100% rename from src/platform/auth/workspace/workspaceTypes.ts rename to src/platform/workspace/workspaceTypes.ts diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index b24e048c20..0982892cf3 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -5,7 +5,7 @@ import ConfirmationDialogContent from '@/components/dialog/content/ConfirmationD import ErrorDialogContent from '@/components/dialog/content/ErrorDialogContent.vue' import PromptDialogContent from '@/components/dialog/content/PromptDialogContent.vue' import TopUpCreditsDialogContentLegacy from '@/components/dialog/content/TopUpCreditsDialogContentLegacy.vue' -import TopUpCreditsDialogContentWorkspace from '@/components/dialog/content/TopUpCreditsDialogContentWorkspace.vue' +import TopUpCreditsDialogContentWorkspace from '@/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue' import { t } from '@/i18n' import { useTelemetry } from '@/platform/telemetry' import { isCloud } from '@/platform/distribution/types' @@ -571,7 +571,7 @@ export const useDialogService = () => { workspaceName?: string }) { const { default: component } = - await import('@/components/dialog/content/workspace/DeleteWorkspaceDialogContent.vue') + await import('@/platform/workspace/components/dialogs/DeleteWorkspaceDialogContent.vue') return dialogStore.showDialog({ key: 'delete-workspace', component, @@ -584,7 +584,7 @@ export const useDialogService = () => { onConfirm?: (name: string) => void | Promise ) { const { default: component } = - await import('@/components/dialog/content/workspace/CreateWorkspaceDialogContent.vue') + await import('@/platform/workspace/components/dialogs/CreateWorkspaceDialogContent.vue') return dialogStore.showDialog({ key: 'create-workspace', component, @@ -601,7 +601,7 @@ export const useDialogService = () => { async function showLeaveWorkspaceDialog() { const { default: component } = - await import('@/components/dialog/content/workspace/LeaveWorkspaceDialogContent.vue') + await import('@/platform/workspace/components/dialogs/LeaveWorkspaceDialogContent.vue') return dialogStore.showDialog({ key: 'leave-workspace', component, @@ -611,7 +611,7 @@ export const useDialogService = () => { async function showEditWorkspaceDialog() { const { default: component } = - await import('@/components/dialog/content/workspace/EditWorkspaceDialogContent.vue') + await import('@/platform/workspace/components/dialogs/EditWorkspaceDialogContent.vue') return dialogStore.showDialog({ key: 'edit-workspace', component, @@ -627,7 +627,7 @@ export const useDialogService = () => { async function showRemoveMemberDialog(memberId: string) { const { default: component } = - await import('@/components/dialog/content/workspace/RemoveMemberDialogContent.vue') + await import('@/platform/workspace/components/dialogs/RemoveMemberDialogContent.vue') return dialogStore.showDialog({ key: 'remove-member', component, @@ -638,7 +638,7 @@ export const useDialogService = () => { async function showInviteMemberDialog() { const { default: component } = - await import('@/components/dialog/content/workspace/InviteMemberDialogContent.vue') + await import('@/platform/workspace/components/dialogs/InviteMemberDialogContent.vue') return dialogStore.showDialog({ key: 'invite-member', component, @@ -654,7 +654,7 @@ export const useDialogService = () => { async function showInviteMemberUpsellDialog() { const { default: component } = - await import('@/components/dialog/content/workspace/InviteMemberUpsellDialogContent.vue') + await import('@/platform/workspace/components/dialogs/InviteMemberUpsellDialogContent.vue') return dialogStore.showDialog({ key: 'invite-member-upsell', component, @@ -670,7 +670,7 @@ export const useDialogService = () => { async function showRevokeInviteDialog(inviteId: string) { const { default: component } = - await import('@/components/dialog/content/workspace/RevokeInviteDialogContent.vue') + await import('@/platform/workspace/components/dialogs/RevokeInviteDialogContent.vue') return dialogStore.showDialog({ key: 'revoke-invite', component, diff --git a/src/stores/firebaseAuthStore.ts b/src/stores/firebaseAuthStore.ts index 225542ee21..76caf20582 100644 --- a/src/stores/firebaseAuthStore.ts +++ b/src/stores/firebaseAuthStore.ts @@ -22,7 +22,7 @@ import { useFirebaseAuth } from 'vuefire' import { getComfyApiBaseUrl } from '@/config/comfyApi' import { t } from '@/i18n' -import { WORKSPACE_STORAGE_KEYS } from '@/platform/auth/workspace/workspaceConstants' +import { WORKSPACE_STORAGE_KEYS } from '@/platform/workspace/workspaceConstants' import { isCloud } from '@/platform/distribution/types' import { useTelemetry } from '@/platform/telemetry' import { useDialogService } from '@/services/dialogService' diff --git a/src/views/GraphView.vue b/src/views/GraphView.vue index a3434ca797..cedc378289 100644 --- a/src/views/GraphView.vue +++ b/src/views/GraphView.vue @@ -45,7 +45,7 @@ import MenuHamburger from '@/components/MenuHamburger.vue' import UnloadWindowConfirmDialog from '@/components/dialog/UnloadWindowConfirmDialog.vue' import GraphCanvas from '@/components/graph/GraphCanvas.vue' import GlobalToast from '@/components/toast/GlobalToast.vue' -import InviteAcceptedToast from '@/components/toast/InviteAcceptedToast.vue' +import InviteAcceptedToast from '@/platform/workspace/components/toasts/InviteAcceptedToast.vue' import RerouteMigrationToast from '@/components/toast/RerouteMigrationToast.vue' import { useBrowserTabTitle } from '@/composables/useBrowserTabTitle' import { useCoreCommands } from '@/composables/useCoreCommands' diff --git a/src/views/layouts/LayoutDefault.vue b/src/views/layouts/LayoutDefault.vue index 613aa04189..f993d82d55 100644 --- a/src/views/layouts/LayoutDefault.vue +++ b/src/views/layouts/LayoutDefault.vue @@ -9,7 +9,7 @@