diff --git a/src/components/dialog/content/setting/WorkspacePanelContent.vue b/src/components/dialog/content/setting/WorkspacePanelContent.vue index 7ffc057ef..35ad45848 100644 --- a/src/components/dialog/content/setting/WorkspacePanelContent.vue +++ b/src/components/dialog/content/setting/WorkspacePanelContent.vue @@ -123,15 +123,11 @@ const { activeTab, setActiveTab, workspaceRole, permissions, uiConfig } = const menu = ref | null>(null) function handleLeaveWorkspace() { - showLeaveWorkspaceDialog(() => { - // TODO: Implement actual leave workspace API call - }) + showLeaveWorkspaceDialog() } function handleDeleteWorkspace() { - showDeleteWorkspaceDialog(() => { - // TODO: Implement actual delete workspace API call - }) + showDeleteWorkspaceDialog() } // Disable delete when workspace has an active subscription (to prevent accidental deletion) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 48d82e44b..206928cd8 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -139,6 +139,7 @@ import { useWorkflowService } from '@/platform/workflow/core/services/workflowSe import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { useWorkflowAutoSave } from '@/platform/workflow/persistence/composables/useWorkflowAutoSave' import { useWorkflowPersistence } from '@/platform/workflow/persistence/composables/useWorkflowPersistence' +import { useInviteUrlLoader } from '@/platform/workspace/composables/useInviteUrlLoader' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions' import TransformPane from '@/renderer/core/layout/transform/TransformPane.vue' @@ -394,6 +395,7 @@ const loadCustomNodesI18n = async () => { const comfyAppReady = ref(false) const workflowPersistence = useWorkflowPersistence() +const inviteUrlLoader = useInviteUrlLoader() useCanvasDrop(canvasRef) useLitegraphSettings() useNodeBadge() @@ -459,6 +461,9 @@ onMounted(async () => { // Load template from URL if present await workflowPersistence.loadTemplateFromUrlIfPresent() + // Accept workspace invite from URL if present (e.g., ?invite=TOKEN) + await inviteUrlLoader.loadInviteFromUrl() + // Initialize release store to fetch releases from comfy-api (fire-and-forget) const { useReleaseStore } = await import('@/platform/updates/common/releaseStore') diff --git a/src/components/topbar/WorkspaceSwitcherPopover.vue b/src/components/topbar/WorkspaceSwitcherPopover.vue index 6f102d299..e6639b0d3 100644 --- a/src/components/topbar/WorkspaceSwitcherPopover.vue +++ b/src/components/topbar/WorkspaceSwitcherPopover.vue @@ -18,10 +18,7 @@