Compare commits

...

1 Commits

Author SHA1 Message Date
Benjamin Lu
00e7da6669 fix(node-help): refetch on locale or node change with last-write-wins guard
- Watch both currentHelpNode and i18n.locale
- Add requestId guard to ignore stale fetches
- Keep UX responsive without debounce

This eliminates the help locale race and updates content when switching language while help is open.
2025-09-25 22:26:57 -07:00

View File

@@ -29,25 +29,32 @@ export const useNodeHelpStore = defineStore('nodeHelp', () => {
return getNodeHelpBaseUrl(node) return getNodeHelpBaseUrl(node)
}) })
// Watch for help node changes and fetch its docs markdown let lastRequestId = 0
watch( async function refreshHelp(node: ComfyNodeDefImpl | null, locale: string) {
() => currentHelpNode.value, helpContent.value = ''
async (node) => { errorMsg.value = null
helpContent.value = ''
errorMsg.value = null
if (node) { if (!node) return
isLoading.value = true
try { const requestId = ++lastRequestId
const locale = i18n.global.locale.value || 'en' isLoading.value = true
helpContent.value = await nodeHelpService.fetchNodeHelp(node, locale) try {
} catch (e: any) { const text = await nodeHelpService.fetchNodeHelp(node, locale)
errorMsg.value = e.message if (requestId !== lastRequestId) return
helpContent.value = node.description || '' helpContent.value = text
} finally { } catch (e: any) {
isLoading.value = false if (requestId !== lastRequestId) return
} errorMsg.value = e.message
} helpContent.value = node.description || ''
} finally {
if (requestId === lastRequestId) isLoading.value = false
}
}
watch(
() => [currentHelpNode.value, i18n.global.locale.value] as const,
async ([node, locale]) => {
await refreshHelp(node, locale || 'en')
}, },
{ immediate: true } { immediate: true }
) )