@@ -33,6 +33,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
33
33
...defaultConfiguration
34
34
}
35
35
36
+ private static _didSubmitForm : boolean = false ;
36
37
private static _savedState : Omit < FeedbackWidgetState , 'isVisible' > = {
37
38
name : '' ,
38
39
email : '' ,
@@ -103,7 +104,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
103
104
onSubmitSuccess ( { name : trimmedName , email : trimmedEmail , message : trimmedDescription , attachments : undefined } ) ;
104
105
Alert . alert ( text . successMessageText ) ;
105
106
onFormSubmitted ( ) ;
106
- this . _clearFormState ( ) ;
107
+ FeedbackWidget . _didSubmitForm = true ;
107
108
} catch ( error ) {
108
109
const errorString = `Feedback form submission failed: ${ error } ` ;
109
110
onSubmitError ( new Error ( errorString ) ) ;
@@ -140,7 +141,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
140
141
const imageUri = result . assets [ 0 ] . uri ;
141
142
NATIVE . getDataFromUri ( imageUri ) . then ( ( data ) => {
142
143
if ( data != null ) {
143
- this . setState ( { filename, attachment : data } , this . _saveFormState ) ;
144
+ this . setState ( { filename, attachment : data } ) ;
144
145
} else {
145
146
logger . error ( 'Failed to read image data from uri:' , imageUri ) ;
146
147
}
@@ -153,11 +154,23 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
153
154
// Defaulting to the onAddScreenshot callback
154
155
const { onAddScreenshot } = { ...defaultConfiguration , ...this . props } ;
155
156
onAddScreenshot ( ( filename : string , attachement : Uint8Array ) => {
156
- this . setState ( { filename, attachment : attachement } , this . _saveFormState ) ;
157
+ this . setState ( { filename, attachment : attachement } ) ;
157
158
} ) ;
158
159
}
159
160
} else {
160
- this . setState ( { filename : undefined , attachment : undefined } , this . _saveFormState ) ;
161
+ this . setState ( { filename : undefined , attachment : undefined } ) ;
162
+ }
163
+ }
164
+
165
+ /**
166
+ * Save the state before unmounting the component.
167
+ */
168
+ public componentWillUnmount ( ) : void {
169
+ if ( FeedbackWidget . _didSubmitForm ) {
170
+ this . _clearFormState ( ) ;
171
+ FeedbackWidget . _didSubmitForm = false ;
172
+ } else {
173
+ this . _saveFormState ( ) ;
161
174
}
162
175
}
163
176
@@ -210,7 +223,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
210
223
style = { styles . input }
211
224
placeholder = { text . namePlaceholder }
212
225
value = { name }
213
- onChangeText = { ( value ) => this . setState ( { name : value } , this . _saveFormState ) }
226
+ onChangeText = { ( value ) => this . setState ( { name : value } ) }
214
227
/>
215
228
</ >
216
229
) }
@@ -226,7 +239,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
226
239
placeholder = { text . emailPlaceholder }
227
240
keyboardType = { 'email-address' as KeyboardTypeOptions }
228
241
value = { email }
229
- onChangeText = { ( value ) => this . setState ( { email : value } , this . _saveFormState ) }
242
+ onChangeText = { ( value ) => this . setState ( { email : value } ) }
230
243
/>
231
244
</ >
232
245
) }
@@ -239,7 +252,7 @@ export class FeedbackWidget extends React.Component<FeedbackWidgetProps, Feedbac
239
252
style = { [ styles . input , styles . textArea ] }
240
253
placeholder = { text . messagePlaceholder }
241
254
value = { description }
242
- onChangeText = { ( value ) => this . setState ( { description : value } , this . _saveFormState ) }
255
+ onChangeText = { ( value ) => this . setState ( { description : value } ) }
243
256
multiline
244
257
/>
245
258
{ ( config . enableScreenshot || imagePickerConfiguration . imagePicker ) && (
0 commit comments