Files
ComfyUI_frontend/src/utils/conflictMessageUtil.ts

63 lines
1.9 KiB
TypeScript

import type { ConflictDetail } from '@/types/conflictDetectionTypes'
/**
* Generates a localized conflict message for a given conflict detail.
* This function should be used anywhere conflict messages need to be displayed.
*
* @param conflict The conflict detail object
* @param t The i18n translation function
* @returns A localized conflict message string
*/
export function getConflictMessage(
conflict: ConflictDetail,
t: (key: string, params?: Record<string, any>) => string
): string {
const messageKey = `manager.conflicts.conflictMessages.${conflict.type}`
// For version and compatibility conflicts, use interpolated message
if (
conflict.type === 'comfyui_version' ||
conflict.type === 'frontend_version' ||
conflict.type === 'os' ||
conflict.type === 'accelerator'
) {
return t(messageKey, {
current: conflict.current_value,
required: conflict.required_value
})
}
// For banned, pending, and import_failed, use simple message
if (
conflict.type === 'banned' ||
conflict.type === 'pending' ||
conflict.type === 'import_failed'
) {
return t(messageKey)
}
// Fallback to generic message with interpolation
return t('manager.conflicts.conflictMessages.generic', {
current: conflict.current_value,
required: conflict.required_value
})
}
/**
* Generates conflict messages for multiple conflicts and joins them.
*
* @param conflicts Array of conflict details
* @param t The i18n translation function
* @param separator The separator to use when joining messages (default: '; ')
* @returns A single string with all conflict messages joined
*/
export function getJoinedConflictMessages(
conflicts: ConflictDetail[],
t: (key: string, params?: Record<string, any>) => string,
separator = '; '
): string {
return conflicts
.map((conflict) => getConflictMessage(conflict, t))
.join(separator)
}