🐛 hover analysis should update the sidebar feedback
This commit is contained in:
@@ -130,6 +130,7 @@ export function analyseAnnotation(
|
|||||||
const text = accumulated || ann.message
|
const text = accumulated || ann.message
|
||||||
const suggestion = extractBlockquote(text) ?? ann.suggestion ?? null
|
const suggestion = extractBlockquote(text) ?? ann.suggestion ?? null
|
||||||
tooltipAnalysisCache.set(ann.id, { text, suggestion })
|
tooltipAnalysisCache.set(ann.id, { text, suggestion })
|
||||||
|
window.dispatchEvent(new CustomEvent('annotation-cached', { detail: { id: ann.id } }))
|
||||||
onUpdate(text, false, suggestion)
|
onUpdate(text, false, suggestion)
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
if (!cancelled) onUpdate(ann.message, false, ann.suggestion ?? null)
|
if (!cancelled) onUpdate(ann.message, false, ann.suggestion ?? null)
|
||||||
@@ -137,6 +138,7 @@ export function analyseAnnotation(
|
|||||||
} else {
|
} else {
|
||||||
const suggestion = ann.suggestion ?? null
|
const suggestion = ann.suggestion ?? null
|
||||||
tooltipAnalysisCache.set(ann.id, { text: ann.message, suggestion })
|
tooltipAnalysisCache.set(ann.id, { text: ann.message, suggestion })
|
||||||
|
window.dispatchEvent(new CustomEvent('annotation-cached', { detail: { id: ann.id } }))
|
||||||
onUpdate(ann.message, false, suggestion)
|
onUpdate(ann.message, false, suggestion)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,24 @@ function FeedbackCard({ ann, autoAnalyse, onDismiss }: FeedbackCardProps): JSX.E
|
|||||||
return () => { cleanupRef.current?.() }
|
return () => { cleanupRef.current?.() }
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
// When a hover tooltip completes analysis for this annotation, hydrate the card
|
||||||
|
// from the cache so the sidebar reflects the result without requiring a manual click.
|
||||||
|
useEffect(() => {
|
||||||
|
const handler = (e: Event): void => {
|
||||||
|
const { id } = (e as CustomEvent<{ id: string }>).detail
|
||||||
|
if (id !== ann.id) return
|
||||||
|
const cached = tooltipAnalysisCache.get(ann.id)
|
||||||
|
if (!cached) return
|
||||||
|
setState(prev =>
|
||||||
|
prev.status === 'idle'
|
||||||
|
? { status: 'done', text: cached.text, suggestion: cached.suggestion }
|
||||||
|
: prev
|
||||||
|
)
|
||||||
|
}
|
||||||
|
window.addEventListener('annotation-cached', handler)
|
||||||
|
return () => window.removeEventListener('annotation-cached', handler)
|
||||||
|
}, [ann.id])
|
||||||
|
|
||||||
const typeName = ann.type.replace(/_/g, ' ')
|
const typeName = ann.type.replace(/_/g, ' ')
|
||||||
const isSpinning = state.status === 'streaming' && state.text === ''
|
const isSpinning = state.status === 'streaming' && state.text === ''
|
||||||
const hasText = (state.status === 'streaming' || state.status === 'done') && state.text !== ''
|
const hasText = (state.status === 'streaming' || state.status === 'done') && state.text !== ''
|
||||||
|
|||||||
Reference in New Issue
Block a user