diff --git a/src/scripts/app.ts b/src/scripts/app.ts index 302d5ee58..ba69fc21b 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -36,7 +36,7 @@ import { StorageLocation } from '@/types/settingTypes' import '@comfyorg/litegraph/css/litegraph.css' import '../assets/css/style.css' import { ExtensionManager } from '@/types/extensionTypes' -import { useNodeDefStore } from '@/stores/nodeDefStore' +import { SYSTEM_NODE_DEFS, useNodeDefStore } from '@/stores/nodeDefStore' export const ANIM_PREVIEW_WIDGET = '$$comfy_animation_preview' @@ -1968,7 +1968,7 @@ export class ComfyApp { await this.registerNodesFromDefs(defs) if (this.vueAppReady) { const nodeDefStore = useNodeDefStore() - nodeDefStore.addNodeDefs(Object.values(defs)) + nodeDefStore.updateNodeDefs([...Object.values(defs), ...SYSTEM_NODE_DEFS]) nodeDefStore.updateWidgets(this.widgets) } await this.#invokeExtensionsAsync('registerCustomNodes') diff --git a/src/stores/nodeDefStore.ts b/src/stores/nodeDefStore.ts index 5cc502b2c..984ae1fa3 100644 --- a/src/stores/nodeDefStore.ts +++ b/src/stores/nodeDefStore.ts @@ -216,19 +216,14 @@ export const SYSTEM_NODE_DEFS: ComfyNodeDef[] = [ } ] -const SYSTEM_NODE_DEFS_BY_NAME = SYSTEM_NODE_DEFS.reduce((acc, nodeDef) => { - acc[nodeDef.name] = nodeDef - return acc -}, {}) as Record - interface State { - nodeDefsByName: Record + nodeDefsByName: Record widgets: Record } export const useNodeDefStore = defineStore('nodeDef', { state: (): State => ({ - nodeDefsByName: SYSTEM_NODE_DEFS_BY_NAME, + nodeDefsByName: {}, widgets: {} }), getters: { @@ -236,21 +231,19 @@ export const useNodeDefStore = defineStore('nodeDef', { return Object.values(state.nodeDefsByName) }, nodeSearchService(state) { - return new NodeSearchService( - Object.values(state.nodeDefsByName).map((nodeDef) => - plainToClass(ComfyNodeDefImpl, nodeDef) - ) - ) + return new NodeSearchService(Object.values(state.nodeDefsByName)) } }, actions: { - addNodeDef(nodeDef: ComfyNodeDef) { - this.nodeDefsByName[nodeDef.name] = nodeDef - }, - addNodeDefs(nodeDefs: ComfyNodeDef[]) { + updateNodeDefs(nodeDefs: ComfyNodeDef[]) { + const newNodeDefsByName: { [key: string]: ComfyNodeDefImpl } = {} for (const nodeDef of nodeDefs) { - this.nodeDefsByName[nodeDef.name] = nodeDef + newNodeDefsByName[nodeDef.name] = plainToClass( + ComfyNodeDefImpl, + nodeDef + ) } + this.nodeDefsByName = newNodeDefsByName }, updateWidgets(widgets: Record) { this.widgets = widgets