From 61f2be5eaebfb7ba1ede95aeaa182bbfef942c3d Mon Sep 17 00:00:00 2001 From: bymyself Date: Mon, 20 Apr 2026 02:25:24 -0700 Subject: [PATCH] refactor: extract switchAwayFrom helper for closeWorkflow readability Addresses review feedback: https://github.com/Comfy-Org/ComfyUI_frontend/pull/11389#discussion_r3107775265 --- .../workflow/core/services/workflowService.ts | 56 ++++++++++--------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/src/platform/workflow/core/services/workflowService.ts b/src/platform/workflow/core/services/workflowService.ts index 424d6463e0..8b42c7103c 100644 --- a/src/platform/workflow/core/services/workflowService.ts +++ b/src/platform/workflow/core/services/workflowService.ts @@ -266,6 +266,35 @@ export const useWorkflowService = () => { }) } + async function trySwitch( + action: () => Promise, + workflow: ComfyWorkflow + ): Promise { + try { + await action() + return !workflowStore.isActive(workflow) + } catch (error) { + console.error('Failed to switch workflow', error) + return false + } + } + + async function switchAwayFrom(workflow: ComfyWorkflow): Promise { + const replacement = + workflowStore.getMostRecentWorkflow() ?? + workflowStore.openedWorkflowIndexShift(1) + + if (replacement) { + const switched = await trySwitch( + () => openWorkflow(replacement), + workflow + ) + if (switched) return true + } + + return trySwitch(() => loadDefaultWorkflow(), workflow) + } + /** * Close a workflow with confirmation if there are unsaved changes * @param workflow The workflow to close @@ -303,31 +332,8 @@ export const useWorkflowService = () => { } // If this is the active workflow, switch to another before closing if (workflowStore.isActive(workflow)) { - let switched = false - - const replacement = - workflowStore.getMostRecentWorkflow() ?? - workflowStore.openedWorkflowIndexShift(1) - - if (replacement) { - try { - await openWorkflow(replacement) - switched = !workflowStore.isActive(workflow) - } catch (error) { - console.error('Failed to open replacement workflow', error) - } - } - - if (!switched) { - try { - await loadDefaultWorkflow() - switched = !workflowStore.isActive(workflow) - } catch (error) { - console.error('Failed to load default workflow fallback', error) - } - } - - if (!switched) return false + const didSwitch = await switchAwayFrom(workflow) + if (!didSwitch) return false } await workflowStore.closeWorkflow(workflow)