@@ -33,6 +33,16 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
33
33
...defaultConfiguration
34
34
}
35
35
36
+ private static _savedState : Omit < FeedbackWidgetState , 'isVisible' > = {
37
+ name : '' ,
38
+ email : '' ,
39
+ description : '' ,
40
+ filename : undefined ,
41
+ attachment : undefined ,
42
+ } ;
43
+
44
+ private _didSubmitForm : boolean = false ;
45
+
36
46
public constructor ( props : FeedbackWidgetProps ) {
37
47
super ( props ) ;
38
48
@@ -45,9 +55,11 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
45
55
46
56
this . state = {
47
57
isVisible : true ,
48
- name : currentUser . useSentryUser . name ,
49
- email : currentUser . useSentryUser . email ,
50
- description : '' ,
58
+ name : FeedbackWidget . _savedState . name || currentUser . useSentryUser . name ,
59
+ email : FeedbackWidget . _savedState . email || currentUser . useSentryUser . email ,
60
+ description : FeedbackWidget . _savedState . description || '' ,
61
+ filename : FeedbackWidget . _savedState . filename || undefined ,
62
+ attachment : FeedbackWidget . _savedState . attachment || undefined ,
51
63
} ;
52
64
}
53
65
@@ -92,9 +104,10 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
92
104
this . setState ( { isVisible : false } ) ;
93
105
}
94
106
captureFeedback ( userFeedback , attachments ? { attachments } : undefined ) ;
95
- onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : undefined } ) ;
107
+ onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : attachments } ) ;
96
108
Alert . alert ( text . successMessageText ) ;
97
109
onFormSubmitted ( ) ;
110
+ this . _didSubmitForm = true ;
98
111
} catch ( error ) {
99
112
const errorString = `Feedback form submission failed: ${ error } ` ;
100
113
onSubmitError ( new Error ( errorString ) ) ;
@@ -152,6 +165,18 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
152
165
}
153
166
}
154
167
168
+ /**
169
+ * Save the state before unmounting the component.
170
+ */
171
+ public componentWillUnmount ( ) : void {
172
+ if ( this . _didSubmitForm ) {
173
+ this . _clearFormState ( ) ;
174
+ this . _didSubmitForm = false ;
175
+ } else {
176
+ this . _saveFormState ( ) ;
177
+ }
178
+ }
179
+
155
180
/**
156
181
* Renders the feedback form screen.
157
182
*/
@@ -259,4 +284,18 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
259
284
</ SafeAreaView >
260
285
) ;
261
286
}
287
+
288
+ private _saveFormState = ( ) : void => {
289
+ FeedbackWidget . _savedState = { ...this . state } ;
290
+ } ;
291
+
292
+ private _clearFormState = ( ) : void => {
293
+ FeedbackWidget . _savedState = {
294
+ name : '' ,
295
+ email : '' ,
296
+ description : '' ,
297
+ filename : undefined ,
298
+ attachment : undefined ,
299
+ } ;
300
+ } ;
262
301
}
0 commit comments