diff --git a/lib/components/FileMenuLeftHeader.tsx b/lib/components/FileMenuLeftHeader.tsx index 073b7141..de8a7344 100644 --- a/lib/components/FileMenuLeftHeader.tsx +++ b/lib/components/FileMenuLeftHeader.tsx @@ -356,7 +356,7 @@ export const FileMenuLeftHeader = (props: { isOpen={isSelectSnippetDialogOpen} /> - + {BugReportDialog} setIsImportDialogOpen(false)} diff --git a/lib/components/useBugReportDialog.tsx b/lib/components/useBugReportDialog.tsx index 5d46127a..f122fc2f 100644 --- a/lib/components/useBugReportDialog.tsx +++ b/lib/components/useBugReportDialog.tsx @@ -4,6 +4,7 @@ import { useCallback, useEffect, useMemo, + useRef, useState, type ReactElement, } from "react" @@ -28,7 +29,7 @@ declare global { } type UseBugReportDialogResult = { - BugReportDialog: () => ReactElement + BugReportDialog: ReactElement openBugReportDialog: () => void } @@ -73,7 +74,7 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { const [isOpen, setIsOpen] = useState(false) const [isSubmitting, setIsSubmitting] = useState(false) const [errorMessage, setErrorMessage] = useState(null) - const [userText, setUserText] = useState("") + const textareaRef = useRef(null) const [successState, setSuccessState] = useState<{ bugReportUrl: string } | null>(null) @@ -89,13 +90,13 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { // Populate text field with execution error when dialog opens useEffect(() => { - if (isOpen && !successState) { + if (isOpen && !successState && textareaRef.current) { const globalError = typeof window !== "undefined" ? window.__TSCIRCUIT_LAST_EXECUTION_ERROR : undefined if (globalError) { - setUserText(`I'm getting this execution error:\n\n${globalError}`) + textareaRef.current.value = `I'm getting this execution error:\n\n${globalError}` } } }, [isOpen, successState]) @@ -117,7 +118,9 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { const openBugReportDialog = useCallback(() => { setErrorMessage(null) setSuccessState(null) - setUserText("") + if (textareaRef.current) { + textareaRef.current.value = "" + } setIsOpen(true) }, []) @@ -130,6 +133,7 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { setErrorMessage(null) const registryKy = getRegistryKy() + const userText = textareaRef.current?.value || "" try { // Fetch files from the file server @@ -208,11 +212,12 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { } finally { setIsSubmitting(false) } - }, [userText]) + }, []) - const BugReportDialog = useCallback(() => { + const BugReportDialog = useMemo(() => { return ( { if (!open) { @@ -278,11 +283,10 @@ export const useBugReportDialog = (): UseBugReportDialogResult => { Description (optional)