mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-05 15:40:10 +00:00
Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Claude <noreply@anthropic.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { api } from '@/scripts/api'
|
|
import type { ComfyNodeDefImpl } from '@/stores/nodeDefStore'
|
|
import { NodeSourceType, getNodeSource } from '@/types/nodeSource'
|
|
import { extractCustomNodeName } from '@/utils/nodeHelpUtil'
|
|
|
|
export class NodeHelpService {
|
|
async fetchNodeHelp(node: ComfyNodeDefImpl, locale: string): Promise<string> {
|
|
const nodeSource = getNodeSource(node.python_module)
|
|
|
|
if (nodeSource.type === NodeSourceType.CustomNodes) {
|
|
return this.fetchCustomNodeHelp(node, locale)
|
|
} else {
|
|
return this.fetchCoreNodeHelp(node, locale)
|
|
}
|
|
}
|
|
|
|
private async fetchCustomNodeHelp(
|
|
node: ComfyNodeDefImpl,
|
|
locale: string
|
|
): Promise<string> {
|
|
const customNodeName = extractCustomNodeName(node.python_module)
|
|
if (!customNodeName) {
|
|
throw new Error('Invalid custom node module')
|
|
}
|
|
|
|
// Try locale-specific path first
|
|
const localePath = `/extensions/${customNodeName}/docs/${node.name}/${locale}.md`
|
|
let res = await fetch(api.fileURL(localePath))
|
|
|
|
if (!res.ok) {
|
|
// Fall back to non-locale path
|
|
const fallbackPath = `/extensions/${customNodeName}/docs/${node.name}.md`
|
|
res = await fetch(api.fileURL(fallbackPath))
|
|
}
|
|
|
|
if (!res.ok) {
|
|
throw new Error(res.statusText)
|
|
}
|
|
|
|
return res.text()
|
|
}
|
|
|
|
private async fetchCoreNodeHelp(
|
|
node: ComfyNodeDefImpl,
|
|
locale: string
|
|
): Promise<string> {
|
|
const mdUrl = `/docs/${node.name}/${locale}.md`
|
|
const res = await fetch(api.fileURL(mdUrl))
|
|
|
|
if (!res.ok) {
|
|
throw new Error(res.statusText)
|
|
}
|
|
|
|
return res.text()
|
|
}
|
|
}
|
|
|
|
// Export singleton instance
|
|
export const nodeHelpService = new NodeHelpService()
|