@@ -33,6 +33,15 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
3333 ...defaultConfiguration
3434 }
3535
36+ private static _didSubmitForm : boolean = false ;
37+ private static _savedState : Omit < FeedbackWidgetState , 'isVisible' > = {
38+ name : '' ,
39+ email : '' ,
40+ description : '' ,
41+ filename : undefined ,
42+ attachment : undefined ,
43+ } ;
44+
3645 public constructor ( props : FeedbackWidgetProps ) {
3746 super ( props ) ;
3847
@@ -45,9 +54,11 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
4554
4655 this . state = {
4756 isVisible : true ,
48- name : currentUser . useSentryUser . name ,
49- email : currentUser . useSentryUser . email ,
50- description : '' ,
57+ name : FeedbackWidget . _savedState . name || currentUser . useSentryUser . name ,
58+ email : FeedbackWidget . _savedState . email || currentUser . useSentryUser . email ,
59+ description : FeedbackWidget . _savedState . description || '' ,
60+ filename : FeedbackWidget . _savedState . filename || undefined ,
61+ attachment : FeedbackWidget . _savedState . attachment || undefined ,
5162 } ;
5263 }
5364
@@ -92,9 +103,10 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
92103 this . setState ( { isVisible : false } ) ;
93104 }
94105 captureFeedback ( userFeedback , attachments ? { attachments } : undefined ) ;
95- onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : undefined } ) ;
106+ onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : attachments } ) ;
96107 Alert . alert ( text . successMessageText ) ;
97108 onFormSubmitted ( ) ;
109+ FeedbackWidget . _didSubmitForm = true ;
98110 } catch ( error ) {
99111 const errorString = `Feedback form submission failed: ${ error } ` ;
100112 onSubmitError ( new Error ( errorString ) ) ;
@@ -152,6 +164,18 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
152164 }
153165 }
154166
167+ /**
168+ * Save the state before unmounting the component.
169+ */
170+ public componentWillUnmount ( ) : void {
171+ if ( FeedbackWidget . _didSubmitForm ) {
172+ this . _clearFormState ( ) ;
173+ FeedbackWidget . _didSubmitForm = false ;
174+ } else {
175+ this . _saveFormState ( ) ;
176+ }
177+ }
178+
155179 /**
156180 * Renders the feedback form screen.
157181 */
@@ -259,4 +283,18 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
259283 </ SafeAreaView >
260284 ) ;
261285 }
286+
287+ private _saveFormState = ( ) : void => {
288+ FeedbackWidget . _savedState = { ...this . state } ;
289+ } ;
290+
291+ private _clearFormState = ( ) : void => {
292+ FeedbackWidget . _savedState = {
293+ name : '' ,
294+ email : '' ,
295+ description : '' ,
296+ filename : undefined ,
297+ attachment : undefined ,
298+ } ;
299+ } ;
262300}
0 commit comments