Skip to content

Commit 32ed446

Browse files
viva-jinyiclaude
andauthored
[bugfix] Fix enable pack functionality to use proper API endpoint (#6157)
## Summary - Fixed issue where enabling a disabled pack incorrectly triggered installation instead of using the dedicated enable endpoint - Added proper `enablePack` method in the manager service layer - Updated store and component to use the correct API call ## Problem When users toggled a disabled pack to enable it via `PackEnableToggle` component, the system was incorrectly calling the install endpoint with full installation parameters instead of the simpler enable endpoint that only requires the pack ID. ## Solution 1. **Added dedicated `enablePack` method in `comfyManagerService.ts`**: - Uses the `'enable'` task kind with `EnablePackParams` - Only requires `cnr_id` parameter (simpler than install) 2. **Updated `comfyManagerStore.ts`**: - Created proper `enablePack` function that queues an enable task - Removed the incorrect aliasing where `enablePack` was pointing to `installPack` 3. **Simplified `PackEnableToggle.vue`**: - Now calls `enablePack` with only required parameters (id, version) - Removed unnecessary installation-specific parameters ## Test plan - [x] Enable a disabled pack and verify it uses the enable endpoint (not install) - [x] Confirm the pack is properly enabled after the operation - [x] Check that the task queue shows "Enabling" message (not "Installing") - [x] Verify existing install/uninstall functionality still works Fixes #6154 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6157-bugfix-Fix-enable-pack-functionality-to-use-proper-API-endpoint-2926d73d3650819fa4caf1b848f99735) by [Unito](https://www.unito.io) --------- Co-authored-by: Claude <[email protected]>
1 parent 4066fbd commit 32ed446

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

src/workbench/extensions/manager/components/manager/button/PackEnableToggle.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const mockNodePack = {
3131
}
3232

3333
const mockIsPackEnabled = vi.fn()
34-
const mockEnablePack = { call: vi.fn().mockResolvedValue(undefined) }
34+
const mockEnablePack = vi.fn().mockResolvedValue(undefined)
3535
const mockDisablePack = vi.fn().mockResolvedValue(undefined)
3636
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
3737
useComfyManagerStore: vi.fn(() => ({
@@ -46,7 +46,7 @@ describe('PackEnableToggle', () => {
4646
beforeEach(() => {
4747
vi.clearAllMocks()
4848
mockIsPackEnabled.mockReset()
49-
mockEnablePack.call.mockReset().mockResolvedValue(undefined)
49+
mockEnablePack.mockReset().mockResolvedValue(undefined)
5050
mockDisablePack.mockReset().mockResolvedValue(undefined)
5151
})
5252

@@ -116,7 +116,7 @@ describe('PackEnableToggle', () => {
116116
const toggleSwitch = wrapper.findComponent(ToggleSwitch)
117117
await toggleSwitch.vm.$emit('update:modelValue', true)
118118

119-
expect(mockEnablePack.call).toHaveBeenCalledWith(
119+
expect(mockEnablePack).toHaveBeenCalledWith(
120120
expect.objectContaining({
121121
id: mockNodePack.id,
122122
version: mockNodePack.latest_version.version
@@ -143,7 +143,7 @@ describe('PackEnableToggle', () => {
143143
const pendingPromise = new Promise<void>((resolve) => {
144144
setTimeout(() => resolve(), 1000)
145145
})
146-
mockEnablePack.call.mockReturnValue(pendingPromise)
146+
mockEnablePack.mockReturnValue(pendingPromise)
147147

148148
mockIsPackEnabled.mockReturnValue(false)
149149
const wrapper = mountComponent()

src/workbench/extensions/manager/components/manager/button/PackEnableToggle.vue

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,11 @@ const handleEnable = () => {
106106
if (!nodePack.id) {
107107
throw new Error('Node ID is required for enabling')
108108
}
109-
return enablePack.call({
109+
return enablePack({
110110
id: nodePack.id,
111111
version:
112112
version.value ??
113-
('latest' as ManagerComponents['schemas']['SelectedVersion']),
114-
selected_version:
115-
version.value ??
116-
('latest' as ManagerComponents['schemas']['SelectedVersion']),
117-
repository: nodePack.repository ?? '',
118-
channel: 'default' as ManagerComponents['schemas']['ManagerChannel'],
119-
mode: 'cache' as ManagerComponents['schemas']['ManagerDatabaseSource'],
120-
skip_post_install: false
113+
('latest' as ManagerComponents['schemas']['SelectedVersion'])
121114
})
122115
}
123116

src/workbench/extensions/manager/services/comfyManagerService.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,14 @@ export const useComfyManagerService = () => {
228228
return queueTask('disable', params, ui_id, signal)
229229
}
230230

231+
const enablePack = async (
232+
params: components['schemas']['EnablePackParams'],
233+
ui_id?: string,
234+
signal?: AbortSignal
235+
): Promise<null> => {
236+
return queueTask('enable', params, ui_id, signal)
237+
}
238+
231239
const updatePack = async (
232240
params: components['schemas']['UpdatePackParams'],
233241
ui_id?: string,
@@ -321,7 +329,7 @@ export const useComfyManagerService = () => {
321329
getImportFailInfoBulk,
322330
installPack,
323331
uninstallPack,
324-
enablePack: installPack, // enable is done via install
332+
enablePack,
325333
disablePack,
326334
updatePack,
327335
updateAllPacks,

src/workbench/extensions/manager/stores/comfyManagerStore.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,15 @@ export const useComfyManagerStore = defineStore('comfyManager', () => {
317317
await enqueueTaskWithLogs(task, t('g.disabling', { id: params.id }))
318318
}
319319

320+
const enablePack = async (params: ManagerPackInfo, signal?: AbortSignal) => {
321+
const enableParams: components['schemas']['EnablePackParams'] = {
322+
cnr_id: params.id
323+
}
324+
const task = (taskId: string) =>
325+
managerService.enablePack(enableParams, taskId, signal)
326+
await enqueueTaskWithLogs(task, t('g.enabling', { id: params.id }))
327+
}
328+
320329
const getInstalledPackVersion = (packId: string) => {
321330
const pack = installedPacks.value[packId]
322331
return pack?.ver
@@ -380,7 +389,7 @@ export const useComfyManagerStore = defineStore('comfyManager', () => {
380389
updatePack,
381390
updateAllPacks,
382391
disablePack,
383-
enablePack: installPack // Enable is done via install endpoint with a disabled pack
392+
enablePack
384393
}
385394
})
386395

0 commit comments

Comments
 (0)