mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-27 17:52:16 +00:00
fix: import fail info warning icon (#7753)
# Fix Import Failed Warning Icon ## Problem Description Warning icons were not displayed when import failed errors occurred in installed packages. ## Root Cause Conflict detection logic mismatch between `PackCardFooter` and `PackEnableToggle`: - **PackCardFooter**: Uses `checkNodeCompatibility()` - System compatibility check **before** installation (OS, accelerator, version, etc.) - Does not include import failed information - **PackEnableToggle**: Uses `getConflictsForPackageByID()` - Actual conflict data **after** installation (including import failed) - But was dependent on parent component's `hasConflict` prop ## Changes Made ### 1. PackEnableToggle.vue ```diff - <div v-if="hasConflict"> + <div v-if="packageConflict?.has_conflict"> ``` - Removed `hasConflict` prop dependency - Changed to use only internal store data (`packageConflict`) ### 2. PackCardFooter.vue ```diff - <PackEnableToggle :has-conflict="hasConflicts" :node-pack="nodePack" /> + <PackEnableToggle :node-pack="nodePack" /> ``` - Removed unnecessary `has-conflict` prop passing ## Result - ✅ Warning icon properly displays for installed packages with import failed errors - ✅ Conflict modal works correctly when clicked - ✅ Each component uses appropriate conflict detection logic [after.webm](https://github.com/user-attachments/assets/80576018-0a5b-4e32-9df6-686be3774313) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7753-fix-import-fail-info-warning-icon-2d36d73d365081518fbeedf539a19040) by [Unito](https://www.unito.io) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
@@ -137,9 +137,9 @@ describe('NodeConflictDialogContent', () => {
|
||||
|
||||
const wrapper = createWrapper()
|
||||
|
||||
expect(wrapper.text()).toContain('0')
|
||||
expect(wrapper.text()).toContain('Conflicts')
|
||||
expect(wrapper.text()).toContain('Extensions at Risk')
|
||||
// When there are no conflicts, the conflict sections should not be rendered
|
||||
expect(wrapper.text()).not.toContain('Conflicts')
|
||||
expect(wrapper.text()).not.toContain('Extensions at Risk')
|
||||
expect(wrapper.find('[class*="Import Failed Extensions"]').exists()).toBe(
|
||||
false
|
||||
)
|
||||
@@ -364,9 +364,9 @@ describe('NodeConflictDialogContent', () => {
|
||||
mockConflictData.value = []
|
||||
const wrapper = createWrapper()
|
||||
|
||||
expect(wrapper.text()).toContain('0')
|
||||
expect(wrapper.text()).toContain('Conflicts')
|
||||
expect(wrapper.text()).toContain('Extensions at Risk')
|
||||
// When there are no conflicts, none of the sections should be visible
|
||||
expect(wrapper.text()).not.toContain('Conflicts')
|
||||
expect(wrapper.text()).not.toContain('Extensions at Risk')
|
||||
// Import failed section should not be visible when there are no import failures
|
||||
expect(wrapper.text()).not.toContain('Import Failed Extensions')
|
||||
})
|
||||
|
||||
@@ -14,6 +14,17 @@ import { useConflictDetectionStore } from '@/workbench/extensions/manager/stores
|
||||
import type { ConflictDetectionResult } from '@/workbench/extensions/manager/types/conflictDetectionTypes'
|
||||
import { checkVersionCompatibility } from '@/workbench/extensions/manager/utils/versionUtil'
|
||||
|
||||
// Mock @vueuse/core until function
|
||||
vi.mock('@vueuse/core', async () => {
|
||||
const actual = await vi.importActual('@vueuse/core')
|
||||
return {
|
||||
...actual,
|
||||
until: vi.fn(() => ({
|
||||
toBe: vi.fn(() => Promise.resolve())
|
||||
}))
|
||||
}
|
||||
})
|
||||
|
||||
// Mock dependencies
|
||||
vi.mock('@/workbench/extensions/manager/services/comfyManagerService', () => ({
|
||||
useComfyManagerService: vi.fn()
|
||||
@@ -159,6 +170,7 @@ describe('useConflictDetection', () => {
|
||||
clearConflicts: vi.fn()
|
||||
} as unknown as ReturnType<typeof useConflictDetectionStore>
|
||||
|
||||
const mockIsInitialized = ref(true)
|
||||
const mockSystemStatsStore = {
|
||||
systemStats: {
|
||||
system: {
|
||||
@@ -171,7 +183,7 @@ describe('useConflictDetection', () => {
|
||||
'3.11.0 (main, Oct 13 2023, 09:34:16) [Clang 15.0.0 (clang-1500.0.40.1)]',
|
||||
pytorch_version: '2.1.0',
|
||||
embedded_python: false,
|
||||
argv: []
|
||||
argv: ['--enable-manager']
|
||||
},
|
||||
devices: [
|
||||
{
|
||||
@@ -185,7 +197,7 @@ describe('useConflictDetection', () => {
|
||||
}
|
||||
]
|
||||
},
|
||||
isInitialized: ref(true),
|
||||
isInitialized: mockIsInitialized,
|
||||
$state: {} as never,
|
||||
$patch: vi.fn(),
|
||||
$reset: vi.fn(),
|
||||
|
||||
Reference in New Issue
Block a user