@@ -33,6 +33,15 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
3333 ...defaultConfiguration
3434 }
3535
36+ private static _savedState : FeedbackFormState = {
37+ isVisible : false ,
38+ name : '' ,
39+ email : '' ,
40+ description : '' ,
41+ filename : undefined ,
42+ attachment : undefined ,
43+ } ;
44+
3645 public constructor ( props : FeedbackFormProps ) {
3746 super ( props ) ;
3847
@@ -45,9 +54,11 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
4554
4655 this . state = {
4756 isVisible : true ,
48- name : currentUser . useSentryUser . name ,
49- email : currentUser . useSentryUser . email ,
50- description : '' ,
57+ name : FeedbackForm . _savedState . name || currentUser . useSentryUser . name ,
58+ email : FeedbackForm . _savedState . email || currentUser . useSentryUser . email ,
59+ description : FeedbackForm . _savedState . description || '' ,
60+ filename : FeedbackForm . _savedState . filename || undefined ,
61+ attachment : FeedbackForm . _savedState . attachment || undefined ,
5162 } ;
5263 }
5364
@@ -93,6 +104,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
93104 onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : undefined } ) ;
94105 Alert . alert ( text . successMessageText ) ;
95106 onFormSubmitted ( ) ;
107+ this . _clearFormState ( ) ;
96108 } catch ( error ) {
97109 const errorString = `Feedback form submission failed: ${ error } ` ;
98110 onSubmitError ( new Error ( errorString ) ) ;
@@ -129,7 +141,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
129141 const imageUri = result . assets [ 0 ] . uri ;
130142 NATIVE . getDataFromUri ( imageUri ) . then ( ( data ) => {
131143 if ( data != null ) {
132- this . setState ( { filename, attachment : data } ) ;
144+ this . setState ( { filename, attachment : data } , this . _saveFormState ) ;
133145 } else {
134146 logger . error ( 'Failed to read image data from uri:' , imageUri ) ;
135147 }
@@ -142,11 +154,11 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
142154 // Defaulting to the onAddScreenshot callback
143155 const { onAddScreenshot } = { ...defaultConfiguration , ...this . props } ;
144156 onAddScreenshot ( ( filename : string , attachement : Uint8Array ) => {
145- this . setState ( { filename, attachment : attachement } ) ;
157+ this . setState ( { filename, attachment : attachement } , this . _saveFormState ) ;
146158 } ) ;
147159 }
148160 } else {
149- this . setState ( { filename : undefined , attachment : undefined } ) ;
161+ this . setState ( { filename : undefined , attachment : undefined } , this . _saveFormState ) ;
150162 }
151163 }
152164
@@ -199,7 +211,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
199211 style = { styles . input }
200212 placeholder = { text . namePlaceholder }
201213 value = { name }
202- onChangeText = { ( value ) => this . setState ( { name : value } ) }
214+ onChangeText = { ( value ) => this . setState ( { name : value } , this . _saveFormState ) }
203215 />
204216 </ >
205217 ) }
@@ -215,7 +227,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
215227 placeholder = { text . emailPlaceholder }
216228 keyboardType = { 'email-address' as KeyboardTypeOptions }
217229 value = { email }
218- onChangeText = { ( value ) => this . setState ( { email : value } ) }
230+ onChangeText = { ( value ) => this . setState ( { email : value } , this . _saveFormState ) }
219231 />
220232 </ >
221233 ) }
@@ -228,7 +240,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
228240 style = { [ styles . input , styles . textArea ] }
229241 placeholder = { text . messagePlaceholder }
230242 value = { description }
231- onChangeText = { ( value ) => this . setState ( { description : value } ) }
243+ onChangeText = { ( value ) => this . setState ( { description : value } , this . _saveFormState ) }
232244 multiline
233245 />
234246 { ( config . enableScreenshot || imagePickerConfiguration . imagePicker ) && (
@@ -254,4 +266,19 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor
254266 </ SafeAreaView >
255267 ) ;
256268 }
269+
270+ private _saveFormState = ( ) : void => {
271+ FeedbackForm . _savedState = { ...this . state } ;
272+ } ;
273+
274+ private _clearFormState = ( ) : void => {
275+ FeedbackForm . _savedState = {
276+ isVisible : false ,
277+ name : '' ,
278+ email : '' ,
279+ description : '' ,
280+ filename : undefined ,
281+ attachment : undefined ,
282+ } ;
283+ } ;
257284}
0 commit comments