From fd621f485e8621dfd9d293b0b76e7ce8525b997d Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Fri, 6 Dec 2024 14:37:25 -0800 Subject: [PATCH] Reload current workflow when locale changes (#1824) --- src/components/graph/GraphCanvas.vue | 6 ++++-- src/services/workflowService.ts | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 8053a7418..127a6b206 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -64,6 +64,7 @@ import { setStorageValue } from '@/scripts/utils' import { ChangeTracker } from '@/scripts/changeTracker' import { api } from '@/scripts/api' import { useCommandStore } from '@/stores/commandStore' +import { workflowService } from '@/services/workflowService' const emit = defineEmits(['ready']) const canvasRef = ref(null) @@ -317,8 +318,9 @@ onMounted(async () => { // Start watching for locale change after the initial value is loaded. watch( () => settingStore.get('Comfy.Locale'), - () => { - useCommandStore().execute('Comfy.RefreshNodeDefinitions') + async () => { + await useCommandStore().execute('Comfy.RefreshNodeDefinitions') + workflowService.reloadCurrentWorkflow() } ) diff --git a/src/services/workflowService.ts b/src/services/workflowService.ts index 718f052db..fe963e122 100644 --- a/src/services/workflowService.ts +++ b/src/services/workflowService.ts @@ -124,8 +124,27 @@ export const workflowService = { await app.loadGraphData(blankGraph) }, - async openWorkflow(workflow: ComfyWorkflow) { - if (useWorkflowStore().isActive(workflow)) return + /** + * Reload the current workflow + * This is used to refresh the node definitions update, e.g. when the locale changes. + */ + async reloadCurrentWorkflow() { + const workflow = useWorkflowStore().activeWorkflow + if (workflow) { + await this.openWorkflow(workflow, { force: true }) + } + }, + + /** + * Open a workflow in the current workspace + * @param workflow The workflow to open + * @param options The options for opening the workflow + */ + async openWorkflow( + workflow: ComfyWorkflow, + options: { force: boolean } = { force: false } + ) { + if (useWorkflowStore().isActive(workflow) && !options.force) return const loadFromRemote = !workflow.isLoaded if (loadFromRemote) {