@@ -100,7 +100,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
100
100
try {
101
101
final Uri url = getSanitisedUri (_client, '$keyEndPointUserName ' );
102
102
final Response response = await _client.get (url, headers: headers);
103
- return _handleResponse (_getEmptyUser (), response, ParseApiRQ .currentUser,
103
+ return await _handleResponse (_getEmptyUser (), response, ParseApiRQ .currentUser,
104
104
_debug, _getEmptyUser ().parseClassName);
105
105
} on Exception catch (e) {
106
106
return handleException (
@@ -144,7 +144,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
144
144
},
145
145
body: body);
146
146
147
- return _handleResponse (
147
+ return await _handleResponse (
148
148
this , response, ParseApiRQ .signUp, _debug, parseClassName);
149
149
} on Exception catch (e) {
150
150
return handleException (e, ParseApiRQ .signUp, _debug, parseClassName);
@@ -170,7 +170,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
170
170
keyHeaderRevocableSession: '1' ,
171
171
});
172
172
173
- return _handleResponse (
173
+ return await _handleResponse (
174
174
this , response, ParseApiRQ .login, _debug, parseClassName);
175
175
} on Exception catch (e) {
176
176
return handleException (e, ParseApiRQ .login, _debug, parseClassName);
@@ -193,7 +193,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
193
193
}
194
194
}));
195
195
196
- return _handleResponse (
196
+ return await _handleResponse (
197
197
this , response, ParseApiRQ .loginAnonymous, _debug, parseClassName);
198
198
} on Exception catch (e) {
199
199
return handleException (
@@ -220,7 +220,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
220
220
'authData' : < String , dynamic > {provider: authData}
221
221
}));
222
222
223
- return _handleResponse (
223
+ return await _handleResponse (
224
224
this , response, ParseApiRQ .loginWith, _debug, parseClassName);
225
225
} on Exception catch (e) {
226
226
return handleException (e, ParseApiRQ .loginWith, _debug, parseClassName);
@@ -246,7 +246,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
246
246
final Response response = await _client.post (url,
247
247
headers: < String , String > {keyHeaderSessionToken: sessionId});
248
248
249
- return _handleResponse (
249
+ return await _handleResponse (
250
250
this , response, ParseApiRQ .logout, _debug, parseClassName);
251
251
} on Exception catch (e) {
252
252
return handleException (e, ParseApiRQ .logout, _debug, parseClassName);
@@ -259,7 +259,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
259
259
final Response response = await _client.post (
260
260
'${_client .data .serverUrl }$keyEndPointVerificationEmail ' ,
261
261
body: json.encode (< String , dynamic > {keyVarEmail: emailAddress}));
262
- return _handleResponse (this , response,
262
+ return await _handleResponse (this , response,
263
263
ParseApiRQ .verificationEmailRequest, _debug, parseClassName);
264
264
} on Exception catch (e) {
265
265
return handleException (
@@ -273,7 +273,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
273
273
final Response response = await _client.post (
274
274
'${_client .data .serverUrl }$keyEndPointRequestPasswordReset ' ,
275
275
body: json.encode (< String , dynamic > {keyVarEmail: emailAddress}));
276
- return _handleResponse (
276
+ return await _handleResponse (
277
277
this , response, ParseApiRQ .requestPasswordReset, _debug,
278
278
parseClassName);
279
279
} on Exception catch (e) {
@@ -289,19 +289,27 @@ class ParseUser extends ParseObject implements ParseCloneable {
289
289
@override
290
290
Future <ParseResponse > save () async {
291
291
if (objectId == null ) {
292
- return signUp ();
292
+ return await signUp ();
293
293
} else {
294
- return super .save ();
294
+ final ParseResponse response = await super .save ();
295
+ if (response.success) {
296
+ await _onResponseSuccess ();
297
+ }
298
+ return response;
295
299
}
296
300
}
297
301
302
+ Future <void > _onResponseSuccess () async {
303
+ await saveInStorage (keyParseStoreUser);
304
+ }
305
+
298
306
/// Removes a user from Parse Server locally and online
299
307
Future <ParseResponse > destroy () async {
300
308
if (objectId != null ) {
301
309
try {
302
310
final Uri url = getSanitisedUri (_client, '$_path /$objectId ' );
303
311
final Response response = await _client.delete (url);
304
- return _handleResponse (
312
+ return await _handleResponse (
305
313
this , response, ParseApiRQ .destroy, _debug, parseClassName);
306
314
} on Exception catch (e) {
307
315
return handleException (e, ParseApiRQ .destroy, _debug, parseClassName);
@@ -334,7 +342,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
334
342
335
343
static Future <dynamic > _getUserFromLocalStore (
336
344
{ParseCloneable cloneable}) async {
337
- final CoreStore coreStore = await ParseCoreData ().getStore ();
345
+ final CoreStore coreStore = ParseCoreData ().getStore ();
338
346
final String userJson = await coreStore.getString (keyParseStoreUser);
339
347
340
348
if (userJson != null ) {
@@ -351,8 +359,8 @@ class ParseUser extends ParseObject implements ParseCloneable {
351
359
}
352
360
353
361
/// Handles all the response data for this class
354
- static ParseResponse _handleResponse (ParseUser user, Response response,
355
- ParseApiRQ type, bool debug, String className) {
362
+ static Future < ParseResponse > _handleResponse (ParseUser user, Response response,
363
+ ParseApiRQ type, bool debug, String className) async {
356
364
final ParseResponse parseResponse =
357
365
handleResponse <ParseUser >(user, response, type, debug, className);
358
366
@@ -371,7 +379,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
371
379
return parseResponse;
372
380
} else {
373
381
final ParseUser user = parseResponse.result;
374
- user? .saveInStorage (keyParseStoreUser );
382
+ await user? ._onResponseSuccess ( );
375
383
return parseResponse;
376
384
}
377
385
}
0 commit comments