diff --git a/src/hooks/model.ts b/src/hooks/model.ts index df3fcdb..54b6fba 100644 --- a/src/hooks/model.ts +++ b/src/hooks/model.ts @@ -6,7 +6,7 @@ import { defineStore } from 'hooks/store' import { useToast } from 'hooks/toast' import { castArray, cloneDeep } from 'lodash' import { TreeNode } from 'primevue/treenode' -import { app } from 'scripts/comfyAPI' +import { api, app } from 'scripts/comfyAPI' import { BaseModel, Model, SelectEvent, WithResolved } from 'types/typings' import { bytesToSize, formatDate, previewUrlToFile } from 'utils/common' import { ModelGrid } from 'utils/legacy' @@ -27,16 +27,18 @@ import { import { useI18n } from 'vue-i18n' import { configSetting } from './config' +const systemStat = ref() + type ModelFolder = Record const modelFolderProvideKey = Symbol('modelFolder') as InjectionKey< Ref > -export const genModelFullName = (model: BaseModel) => { +export const genModelFullName = (model: BaseModel, splitter = '/') => { return [model.subFolder, `${model.basename}${model.extension}`] .filter(Boolean) - .join('/') + .join(splitter) } export const genModelUrl = (model: BaseModel) => { @@ -234,6 +236,12 @@ export const useModels = defineStore('models', (store) => { return [prefixPath, fullname].filter(Boolean).join('/') } + onMounted(() => { + api.getSystemStats().then((res) => { + systemStat.value = res + }) + }) + return { initialized: initialized, folders: folders, @@ -717,11 +725,12 @@ export const useModelNodeAction = () => { // Use the legacy method instead const removeEmbeddingExtension = true const strictDragToAdd = false + const splitter = systemStat.value?.system.os === 'nt' ? '\\' : '/' ModelGrid.dragAddModel( event, model.type, - genModelFullName(model), + genModelFullName(model, splitter), removeEmbeddingExtension, strictDragToAdd, ) diff --git a/src/types/global.d.ts b/src/types/global.d.ts index 23bd82a..7629249 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -1,6 +1,10 @@ declare namespace ComfyAPI { namespace api { - class ComfyApi { + class ComfyApiEvent { + getSystemStats: () => Promise + } + + class ComfyApi extends ComfyApiEvent { socket: WebSocket fetchApi: (route: string, options?: RequestInit) => Promise addEventListener: (