Improve Import Failed Error Messages (#7871)

This commit is contained in:
Jin Yi
2026-01-08 10:54:01 +09:00
committed by GitHub
parent a87d2cf1bd
commit 6a733918a7
15 changed files with 284 additions and 88 deletions

View File

@@ -1,11 +1,13 @@
import { computed, unref } from 'vue'
import type { ComputedRef } from 'vue'
import { useI18n } from 'vue-i18n'
import { useDialogService } from '@/services/dialogService'
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
import { useConflictDetectionStore } from '@/workbench/extensions/manager/stores/conflictDetectionStore'
import type { ConflictDetail } from '@/workbench/extensions/manager/types/conflictDetectionTypes'
import type {
ConflictDetail,
ConflictDetectionResult
} from '@/workbench/extensions/manager/types/conflictDetectionTypes'
/**
* Extracting import failed conflicts from conflict list
@@ -24,22 +26,18 @@ function extractImportFailedConflicts(conflicts?: ConflictDetail[] | null) {
* Creating import failed dialog
*/
function createImportFailedDialog() {
const { t } = useI18n()
const { showErrorDialog } = useDialogService()
const { showImportFailedNodeDialog } = useDialogService()
return (importFailedInfo: ConflictDetail[] | null) => {
if (importFailedInfo) {
const errorMessage =
importFailedInfo
.map((conflict) => conflict.required_value)
.filter(Boolean)
.join('\n') || t('manager.importFailedGenericError')
const error = new Error(errorMessage)
showErrorDialog(error, {
title: t('manager.failedToInstall'),
reportType: 'importFailedError'
return (
conflictedPackages: ConflictDetectionResult[] | null,
onClose?: () => void
) => {
if (conflictedPackages && conflictedPackages.length > 0) {
showImportFailedNodeDialog({
conflictedPackages,
dialogComponentProps: {
onClose
}
})
}
}
@@ -74,13 +72,16 @@ export function useImportFailedDetection(
return importFailedInfo.value !== null
})
const showImportFailedDialog = createImportFailedDialog()
const openDialog = createImportFailedDialog()
return {
importFailedInfo,
importFailed,
showImportFailedDialog: () =>
showImportFailedDialog(importFailedInfo.value),
showImportFailedDialog: (onClose?: () => void) => {
if (conflicts.value) {
openDialog([conflicts.value], onClose)
}
},
isInstalled
}
}