mirror of
https://github.com/stablyai/orca.git
synced 2026-10-17 16:02:55 +00:00
Move editor copy reset timers to handlers
This commit is contained in:
@@ -50,6 +50,7 @@ function EditorPanelInner({
|
||||
const [copiedPathToast, setCopiedPathToast] = useState<{ fileId: string; token: number } | null>(
|
||||
null
|
||||
)
|
||||
const copiedPathResetTimerRef = useRef<number | null>(null)
|
||||
const [showMarkdownTableOfContents, setShowMarkdownTableOfContents] = useState(false)
|
||||
const [sideBySide, setSideBySide] = useState(settings?.diffDefaultView === 'side-by-side')
|
||||
const [prevDiffView, setPrevDiffView] = useState(settings?.diffDefaultView)
|
||||
@@ -89,13 +90,6 @@ function EditorPanelInner({
|
||||
useEffect(() => acquireExportPdfListener(), [])
|
||||
useClosedEditorTabCleanup(openFiles)
|
||||
useMarkdownPreviewShortcut({ activeFile, panelRef, openMarkdownPreview })
|
||||
useEffect(() => {
|
||||
if (!copiedPathToast) {
|
||||
return
|
||||
}
|
||||
const timeout = window.setTimeout(() => setCopiedPathToast(null), 1500)
|
||||
return () => window.clearTimeout(timeout)
|
||||
}, [copiedPathToast])
|
||||
|
||||
const handleContentChangeForFile = useCallback(
|
||||
(file: typeof activeFile, content: string) => {
|
||||
@@ -181,8 +175,19 @@ function EditorPanelInner({
|
||||
}
|
||||
try {
|
||||
await window.api.ui.writeClipboardText(copyState.copyText)
|
||||
if (copiedPathResetTimerRef.current !== null) {
|
||||
window.clearTimeout(copiedPathResetTimerRef.current)
|
||||
}
|
||||
setCopiedPathToast({ fileId: activeFile.id, token: Date.now() })
|
||||
copiedPathResetTimerRef.current = window.setTimeout(() => {
|
||||
setCopiedPathToast(null)
|
||||
copiedPathResetTimerRef.current = null
|
||||
}, 1500)
|
||||
} catch {
|
||||
if (copiedPathResetTimerRef.current !== null) {
|
||||
window.clearTimeout(copiedPathResetTimerRef.current)
|
||||
copiedPathResetTimerRef.current = null
|
||||
}
|
||||
setCopiedPathToast(null)
|
||||
}
|
||||
}, [activeFile])
|
||||
|
||||
@@ -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[]),
|
||||
@@ -716,20 +717,19 @@ export default function MarkdownPreview({
|
||||
}
|
||||
try {
|
||||
await window.api.ui.writeClipboardText(markdownReviewPrompt)
|
||||
if (reviewNotesCopiedResetTimerRef.current !== null) {
|
||||
window.clearTimeout(reviewNotesCopiedResetTimerRef.current)
|
||||
}
|
||||
setReviewNotesCopied(true)
|
||||
reviewNotesCopiedResetTimerRef.current = window.setTimeout(() => {
|
||||
setReviewNotesCopied(false)
|
||||
reviewNotesCopiedResetTimerRef.current = null
|
||||
}, 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])
|
||||
|
||||
const scrollToReviewNote = useCallback((comment: DiffComment): void => {
|
||||
setActiveReviewCommentId(comment.id)
|
||||
const root = rootRef.current
|
||||
|
||||
Reference in New Issue
Block a user