mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-29 10:42:44 +00:00
Add Comfy Manager store (#3007)
This commit is contained in:
117
src/stores/comfyManagerStore.ts
Normal file
117
src/stores/comfyManagerStore.ts
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
import { whenever } from '@vueuse/core'
|
||||||
|
import { defineStore } from 'pinia'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
import { useCachedRequest } from '@/composables/useCachedRequest'
|
||||||
|
import { useManagerQueue } from '@/composables/useManagerQueue'
|
||||||
|
import { useComfyManagerService } from '@/services/comfyManagerService'
|
||||||
|
import {
|
||||||
|
InstallPackParams,
|
||||||
|
InstalledPacksResponse,
|
||||||
|
ManagerPackInfo,
|
||||||
|
UpdateAllPacksParams
|
||||||
|
} from '@/types/comfyManagerTypes'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store for state of installed node packs
|
||||||
|
*/
|
||||||
|
export const useComfyManagerStore = defineStore('comfyManager', () => {
|
||||||
|
const managerService = useComfyManagerService()
|
||||||
|
const installedPacks = ref<InstalledPacksResponse>({})
|
||||||
|
const isStale = ref(true)
|
||||||
|
|
||||||
|
const { statusMessage, allTasksDone, enqueueTask } = useManagerQueue()
|
||||||
|
|
||||||
|
const refreshInstalledList = async () => {
|
||||||
|
const packs = await managerService.listInstalledPacks()
|
||||||
|
if (packs) installedPacks.value = packs
|
||||||
|
isStale.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const setStale = () => {
|
||||||
|
isStale.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
whenever(isStale, refreshInstalledList, { immediate: true })
|
||||||
|
|
||||||
|
const installPack = useCachedRequest<InstallPackParams, void>(
|
||||||
|
async (params: InstallPackParams, signal?: AbortSignal) => {
|
||||||
|
enqueueTask({
|
||||||
|
task: () => managerService.installPack(params, signal),
|
||||||
|
onComplete: setStale
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ maxSize: 1 }
|
||||||
|
)
|
||||||
|
|
||||||
|
const uninstallPack = (params: ManagerPackInfo, signal?: AbortSignal) => {
|
||||||
|
installPack.clear()
|
||||||
|
installPack.cancel()
|
||||||
|
|
||||||
|
enqueueTask({
|
||||||
|
task: () => managerService.uninstallPack(params, signal),
|
||||||
|
onComplete: setStale
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatePack = useCachedRequest<ManagerPackInfo, void>(
|
||||||
|
async (params: ManagerPackInfo, signal?: AbortSignal) => {
|
||||||
|
updateAllPacks.clear()
|
||||||
|
updateAllPacks.cancel()
|
||||||
|
|
||||||
|
enqueueTask({
|
||||||
|
task: () => managerService.updatePack(params, signal),
|
||||||
|
onComplete: setStale
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ maxSize: 1 }
|
||||||
|
)
|
||||||
|
|
||||||
|
const updateAllPacks = useCachedRequest<UpdateAllPacksParams, void>(
|
||||||
|
async (params: UpdateAllPacksParams, signal?: AbortSignal) => {
|
||||||
|
enqueueTask({
|
||||||
|
task: () => managerService.updateAllPacks(params, signal),
|
||||||
|
onComplete: setStale
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ maxSize: 1 }
|
||||||
|
)
|
||||||
|
|
||||||
|
const disablePack = (params: ManagerPackInfo, signal?: AbortSignal) => {
|
||||||
|
enqueueTask({
|
||||||
|
task: () => managerService.disablePack(params, signal),
|
||||||
|
onComplete: setStale
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const isPackInstalled = (packName: string | undefined): boolean => {
|
||||||
|
if (!packName) return false
|
||||||
|
return !!installedPacks.value[packName]
|
||||||
|
}
|
||||||
|
|
||||||
|
const isPackEnabled = (packName: string | undefined): boolean => {
|
||||||
|
if (!packName) return false
|
||||||
|
return !!installedPacks.value[packName]?.enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
// Manager state
|
||||||
|
isLoading: managerService.isLoading,
|
||||||
|
error: managerService.error,
|
||||||
|
statusMessage,
|
||||||
|
allTasksDone,
|
||||||
|
|
||||||
|
// Installed packs state
|
||||||
|
installedPacks,
|
||||||
|
isPackInstalled,
|
||||||
|
isPackEnabled,
|
||||||
|
|
||||||
|
// Pack actions
|
||||||
|
installPack,
|
||||||
|
uninstallPack,
|
||||||
|
updatePack,
|
||||||
|
updateAllPacks,
|
||||||
|
disablePack,
|
||||||
|
enablePack: installPack // Enable is done via install endpoint with a disabled pack
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user