From cbc14604c9114028d711b735186af3e167e7b743 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 21 Oct 2023 17:46:57 -0500 Subject: [PATCH] Move SentryFeedbackForm into a separate component --- src/components/sentry-feedback-form.tsx | 53 +++++++++++++++++++++++++ src/components/site-error-boundary.tsx | 42 ++------------------ 2 files changed, 57 insertions(+), 38 deletions(-) create mode 100644 src/components/sentry-feedback-form.tsx diff --git a/src/components/sentry-feedback-form.tsx b/src/components/sentry-feedback-form.tsx new file mode 100644 index 000000000..0ef74bbae --- /dev/null +++ b/src/components/sentry-feedback-form.tsx @@ -0,0 +1,53 @@ +import React, { useState } from 'react'; +import { FormattedMessage } from 'react-intl'; + +import { Textarea, Form, Button, FormGroup, FormActions } from 'soapbox/components/ui'; +import { captureSentryFeedback } from 'soapbox/sentry'; + +interface ISentryFeedbackForm { + eventId: string; +} + +/** Accept feedback for the given Sentry event. */ +const SentryFeedbackForm: React.FC = ({ eventId }) => { + const [feedback, setFeedback] = useState(); + const [isSubmitting, setIsSubmitting] = useState(false); + + const handleFeedbackChange: React.ChangeEventHandler = (e) => { + setFeedback(e.target.value); + }; + + const handleSubmitFeedback: React.FormEventHandler = async (_e) => { + if (!feedback || !eventId) return; + setIsSubmitting(true); + + await captureSentryFeedback({ + event_id: eventId, + comments: feedback, + }).catch(console.error); + + setFeedback(''); + setIsSubmitting(false); + }; + return ( +
+ +