fix(ui): keep generated copy feedback stable (#1328)

Co-authored-by: Isaac Sanchez <isanchez-hawkins@arize.com>
This commit is contained in:
Isaac Sanchez-Hawkins
2026-05-19 17:32:03 +03:00
committed by GitHub
co-authored by Isaac Sanchez
parent 2f89757b9f
commit 69ea4767f7
@@ -8,6 +8,15 @@ import type { GeneratedResult } from './generatedJsonResult';
export const GeneratedJsonResultCard: React.FC<{ result: GeneratedResult }> = ({ result }) => {
const { t } = useI18n();
const [copied, setCopied] = React.useState(false);
const copiedResetTimerRef = React.useRef<number | null>(null);
React.useEffect(() => {
return () => {
if (copiedResetTimerRef.current !== null) {
window.clearTimeout(copiedResetTimerRef.current);
}
};
}, []);
const copyText = React.useMemo(() => {
if (result.kind === 'commit') {
@@ -19,8 +28,16 @@ export const GeneratedJsonResultCard: React.FC<{ result: GeneratedResult }> = ({
const handleCopy = React.useCallback(async () => {
const copyResult = await copyTextToClipboard(copyText || result.raw);
if (!copyResult.ok) return;
if (copiedResetTimerRef.current !== null) {
window.clearTimeout(copiedResetTimerRef.current);
}
setCopied(true);
window.setTimeout(() => setCopied(false), 2000);
copiedResetTimerRef.current = window.setTimeout(() => {
copiedResetTimerRef.current = null;
setCopied(false);
}, 2000);
}, [copyText, result.raw]);
return (