Move markdown review copy timer into handler (#3423)

This commit is contained in:
Neil
2026-05-29 19:30:40 -07:00
committed by GitHub
parent f2f6493316
commit 3775ad2680
@@ -459,6 +459,7 @@ export default function MarkdownPreview({
const [activeAnnotationBlockKey, setActiveAnnotationBlockKey] = useState<string | null>(null)
const [reviewPanelOpen, setReviewPanelOpen] = useState(false)
const [reviewNotesCopied, setReviewNotesCopied] = useState(false)
const reviewNotesCopiedResetTimerRef = useRef<number | null>(null)
const [activeReviewCommentId, setActiveReviewCommentId] = useState<string | null>(null)
const markdownReviewNotes = useMemo(
() => sortMarkdownReviewNotes(markdownComments as MarkdownReviewNote[]),
@@ -581,6 +582,13 @@ export default function MarkdownPreview({
setActiveMatchIndex(-1)
}, [])
const clearReviewNotesCopiedResetTimer = useCallback((): void => {
if (reviewNotesCopiedResetTimerRef.current !== null) {
window.clearTimeout(reviewNotesCopiedResetTimerRef.current)
reviewNotesCopiedResetTimerRef.current = null
}
}, [])
const scrollToAnchor = useCallback((rawAnchor: string): boolean => {
const container = rootRef.current
const body = bodyRef.current
@@ -716,19 +724,16 @@ export default function MarkdownPreview({
}
try {
await window.api.ui.writeClipboardText(markdownReviewPrompt)
clearReviewNotesCopiedResetTimer()
setReviewNotesCopied(true)
reviewNotesCopiedResetTimerRef.current = window.setTimeout(() => {
reviewNotesCopiedResetTimerRef.current = null
setReviewNotesCopied(false)
}, 1600)
} catch {
// Best-effort clipboard action; failures usually mean the window is not focused.
}
}, [markdownReviewNotes.length, markdownReviewPrompt])
useEffect(() => {
if (!reviewNotesCopied) {
return
}
const timeout = window.setTimeout(() => setReviewNotesCopied(false), 1600)
return () => window.clearTimeout(timeout)
}, [reviewNotesCopied])
}, [clearReviewNotesCopiedResetTimer, markdownReviewNotes.length, markdownReviewPrompt])
const scrollToReviewNote = useCallback((comment: DiffComment): void => {
setActiveReviewCommentId(comment.id)