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)
)
}, [
- bugReportFileCount,
- closeBugReportDialog,
- errorMessage,
- handleConfirmBugReport,
isOpen,
- isSessionLoggedIn,
isSubmitting,
+ closeBugReportDialog,
+ errorMessage,
successState,
- userText,
+ bugReportFileCount,
+ isSessionLoggedIn,
+ handleConfirmBugReport,
])
return {