From e601bcb300ef22709176aa00f17921a809e05f26 Mon Sep 17 00:00:00 2001 From: Arjan Singh <1598641+arjansingh@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:36:33 -0700 Subject: [PATCH] [refactor] create src/platform/assets (#5598) * [refactor] create src/platform/assets Per @christian-byrne's feedback. Just bringing this into the repo sooner to clean up from my feature branch * [fix] code review feedback --- src/{ => platform/assets}/schemas/assetSchema.ts | 0 src/{ => platform/assets}/services/assetService.ts | 2 +- .../vueNodes/widgets/composables/useComboWidget.ts | 2 +- src/scripts/api.ts | 5 ++++- src/stores/modelStore.ts | 4 ++-- .../vueNodes/widgets/composables/useComboWidget.test.ts | 4 ++-- tests-ui/tests/services/assetService.test.ts | 2 +- tests-ui/tests/store/modelStore.test.ts | 9 ++++++--- 8 files changed, 17 insertions(+), 11 deletions(-) rename src/{ => platform/assets}/schemas/assetSchema.ts (100%) rename src/{ => platform/assets}/services/assetService.ts (98%) diff --git a/src/schemas/assetSchema.ts b/src/platform/assets/schemas/assetSchema.ts similarity index 100% rename from src/schemas/assetSchema.ts rename to src/platform/assets/schemas/assetSchema.ts diff --git a/src/services/assetService.ts b/src/platform/assets/services/assetService.ts similarity index 98% rename from src/services/assetService.ts rename to src/platform/assets/services/assetService.ts index ffc825260..344209bf7 100644 --- a/src/services/assetService.ts +++ b/src/platform/assets/services/assetService.ts @@ -5,7 +5,7 @@ import { type ModelFile, type ModelFolder, assetResponseSchema -} from '@/schemas/assetSchema' +} from '@/platform/assets/schemas/assetSchema' import { api } from '@/scripts/api' import { useModelToNodeStore } from '@/stores/modelToNodeStore' diff --git a/src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts b/src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts index 96fa0d580..01c3f3184 100644 --- a/src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts +++ b/src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts @@ -7,6 +7,7 @@ import type { IBaseWidget, IComboWidget } from '@/lib/litegraph/src/types/widgets' +import { assetService } from '@/platform/assets/services/assetService' import { useSettingStore } from '@/platform/settings/settingStore' import { transformInputSpecV2ToV1 } from '@/schemas/nodeDef/migration' import { @@ -23,7 +24,6 @@ import { type ComfyWidgetConstructorV2, addValueControlWidgets } from '@/scripts/widgets' -import { assetService } from '@/services/assetService' import { useRemoteWidget } from './useRemoteWidget' diff --git a/src/scripts/api.ts b/src/scripts/api.ts index 77fc17286..5c8dd209c 100644 --- a/src/scripts/api.ts +++ b/src/scripts/api.ts @@ -2,6 +2,10 @@ import axios from 'axios' import { get } from 'es-toolkit/compat' import defaultClientFeatureFlags from '@/config/clientFeatureFlags.json' with { type: 'json' } +import type { + ModelFile, + ModelFolderInfo +} from '@/platform/assets/schemas/assetSchema' import { useToastStore } from '@/platform/updates/common/toastStore' import { WorkflowTemplates } from '@/platform/workflow/templates/types/template' import type { @@ -37,7 +41,6 @@ import type { User, UserDataFullInfo } from '@/schemas/apiSchema' -import type { ModelFile, ModelFolderInfo } from '@/schemas/assetSchema' import type { ComfyNodeDef } from '@/schemas/nodeDefSchema' import type { NodeExecutionId } from '@/types/nodeIdentification' diff --git a/src/stores/modelStore.ts b/src/stores/modelStore.ts index b510dbf5d..16015a9d2 100644 --- a/src/stores/modelStore.ts +++ b/src/stores/modelStore.ts @@ -1,10 +1,10 @@ import { defineStore } from 'pinia' import { computed, ref } from 'vue' +import type { ModelFile } from '@/platform/assets/schemas/assetSchema' +import { assetService } from '@/platform/assets/services/assetService' import { useSettingStore } from '@/platform/settings/settingStore' -import type { ModelFile } from '@/schemas/assetSchema' import { api } from '@/scripts/api' -import { assetService } from '@/services/assetService' /** (Internal helper) finds a value in a metadata object from any of a list of keys. */ function _findInMetadata(metadata: any, ...keys: string[]): string | null { diff --git a/tests-ui/tests/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts b/tests-ui/tests/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts index da47cdd4f..875919ccd 100644 --- a/tests-ui/tests/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts +++ b/tests-ui/tests/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts @@ -2,9 +2,9 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { LGraphNode } from '@/lib/litegraph/src/litegraph' import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' +import { assetService } from '@/platform/assets/services/assetService' import { useComboWidget } from '@/renderer/extensions/vueNodes/widgets/composables/useComboWidget' import type { InputSpec } from '@/schemas/nodeDef/nodeDefSchemaV2' -import { assetService } from '@/services/assetService' vi.mock('@/scripts/widgets', () => ({ addValueControlWidgets: vi.fn() @@ -23,7 +23,7 @@ vi.mock('@/i18n', () => ({ ) })) -vi.mock('@/services/assetService', () => ({ +vi.mock('@/platform/assets/services/assetService', () => ({ assetService: { isAssetBrowserEligible: vi.fn(() => false) } diff --git a/tests-ui/tests/services/assetService.test.ts b/tests-ui/tests/services/assetService.test.ts index 6a3981acb..f11c9d40d 100644 --- a/tests-ui/tests/services/assetService.test.ts +++ b/tests-ui/tests/services/assetService.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' +import { assetService } from '@/platform/assets/services/assetService' import { api } from '@/scripts/api' -import { assetService } from '@/services/assetService' vi.mock('@/stores/modelToNodeStore', () => ({ useModelToNodeStore: vi.fn(() => ({ diff --git a/tests-ui/tests/store/modelStore.test.ts b/tests-ui/tests/store/modelStore.test.ts index 8ecee118e..c9ed82e55 100644 --- a/tests-ui/tests/store/modelStore.test.ts +++ b/tests-ui/tests/store/modelStore.test.ts @@ -1,9 +1,9 @@ import { createPinia, setActivePinia } from 'pinia' import { beforeEach, describe, expect, it, vi } from 'vitest' +import { assetService } from '@/platform/assets/services/assetService' import { useSettingStore } from '@/platform/settings/settingStore' import { api } from '@/scripts/api' -import { assetService } from '@/services/assetService' import { useModelStore } from '@/stores/modelStore' // Mock the api @@ -11,12 +11,15 @@ vi.mock('@/scripts/api', () => ({ api: { getModels: vi.fn(), getModelFolders: vi.fn(), - viewMetadata: vi.fn() + viewMetadata: vi.fn(), + apiURL: vi.fn((path: string) => `http://localhost:8188${path}`), + addEventListener: vi.fn(), + removeEventListener: vi.fn() } })) // Mock the assetService -vi.mock('@/services/assetService', () => ({ +vi.mock('@/platform/assets/services/assetService', () => ({ assetService: { getAssetModelFolders: vi.fn(), getAssetModels: vi.fn()