From 63da5b4243d213824541a35d71c72e82f57c6ac6 Mon Sep 17 00:00:00 2001 From: Simon Date: Thu, 11 Jul 2019 07:34:01 +0800 Subject: [PATCH] same fix for version 1.0.23 --- lib/src/network/parse_live_query.dart | 6 +++--- lib/src/objects/parse_base.dart | 21 ++++++++++----------- lib/src/objects/parse_installation.dart | 8 ++++---- lib/src/objects/parse_object.dart | 14 ++++++-------- lib/src/objects/parse_user.dart | 10 ++++------ 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/lib/src/network/parse_live_query.dart b/lib/src/network/parse_live_query.dart index 5c4a48f46..c368efa8c 100644 --- a/lib/src/network/parse_live_query.dart +++ b/lib/src/network/parse_live_query.dart @@ -11,7 +11,8 @@ class LiveQuery { securityContext: ParseCoreData().securityContext); _debug = isDebugEnabled(objectLevelDebug: debug); - _sendSessionId = autoSendSessionId ?? ParseCoreData().autoSendSessionId ?? true; + _sendSessionId = + autoSendSessionId ?? ParseCoreData().autoSendSessionId ?? true; } WebSocket _webSocket; @@ -40,7 +41,6 @@ class LiveQuery { // ignore: always_specify_types Future subscribe(QueryBuilder query) async { - String _liveQueryURL = _client.data.liveQueryURL; if (_liveQueryURL.contains('https')) { _liveQueryURL = _liveQueryURL.replaceAll('https', 'wss'); @@ -101,7 +101,7 @@ class LiveQuery { if (_debug) { print('$_printConstLiveQuery: Done'); } - }, onError: (Error error) { + }, onError: (Object error) { if (_debug) { print( '$_printConstLiveQuery: Error: ${error.runtimeType.toString()}'); diff --git a/lib/src/objects/parse_base.dart b/lib/src/objects/parse_base.dart index 795f06391..ccb9e72a5 100644 --- a/lib/src/objects/parse_base.dart +++ b/lib/src/objects/parse_base.dart @@ -41,12 +41,13 @@ abstract class ParseBase { if (_dirty || _unsavedChanges.isNotEmpty) { return true; } + bool match = false; _getObjectData().forEach((String key, dynamic value) { if (value is ParseObject && value._areChildrenDirty(seenObjects)) { - return true; + match = true; } }); - return false; + return match; } /// Returns [DateTime] createdAt @@ -88,9 +89,8 @@ abstract class ParseBase { map[keyVarUpdatedAt] = _parseDateFormat.format(updatedAt); } - final Map target = forApiRQ - ? _unsavedChanges - : _getObjectData(); + final Map target = + forApiRQ ? _unsavedChanges : _getObjectData(); target.forEach((String key, dynamic value) { if (!map.containsKey(key)) { map[key] = parseEncode(value, full: full); @@ -102,6 +102,7 @@ abstract class ParseBase { map.remove(keyVarUpdatedAt); map.remove(keyVarClassName); //map.remove(keyVarAcl); + map.remove(keyVarObjectId); map.remove(keyParamSessionToken); } @@ -172,11 +173,11 @@ abstract class ParseBase { void operator []=(String key, dynamic value) { set(key, value); } + /// Saves in storage Future saveInStorage(String key) async { final String objectJson = json.encode(toJson(full: true)); - ParseCoreData().getStore() - ..setString(key, objectJson); + ParseCoreData().getStore()..setString(key, objectJson); } /// Sets type [T] from objectData @@ -240,8 +241,7 @@ abstract class ParseBase { await unpin(); final Map objectMap = parseEncode(this, full: true); final String json = jsonEncode(objectMap); - ParseCoreData().getStore() - ..setString(objectId, json); + ParseCoreData().getStore()..setString(objectId, json); return true; } else { return false; @@ -253,8 +253,7 @@ abstract class ParseBase { /// Replicates Android SDK pin process and saves object to storage Future unpin({String key}) async { if (objectId != null) { - ParseCoreData().getStore() - ..remove(key ?? objectId); + ParseCoreData().getStore()..remove(key ?? objectId); return true; } diff --git a/lib/src/objects/parse_installation.dart b/lib/src/objects/parse_installation.dart index dfec33f27..f94b5db61 100644 --- a/lib/src/objects/parse_installation.dart +++ b/lib/src/objects/parse_installation.dart @@ -9,7 +9,7 @@ class ParseInstallation extends ParseObject { _client = client ?? ParseHTTPClient( sendSessionId: - autoSendSessionId ?? ParseCoreData().autoSendSessionId, + autoSendSessionId ?? ParseCoreData().autoSendSessionId, securityContext: ParseCoreData().securityContext); } @@ -127,14 +127,14 @@ class ParseInstallation extends ParseObject { /// Gets the locally stored installation static Future _getFromLocalStore() async { - final CoreStore coreStore = await ParseCoreData().getStore(); + final CoreStore coreStore = ParseCoreData().getStore(); final String installationJson = - await coreStore.getString(keyParseStoreInstallation); + await coreStore.getString(keyParseStoreInstallation); if (installationJson != null) { final Map installationMap = - json.decode(installationJson); + json.decode(installationJson); if (installationMap != null) { return ParseInstallation()..fromJson(installationMap); diff --git a/lib/src/objects/parse_object.dart b/lib/src/objects/parse_object.dart index 2c790c2c8..d60d38a46 100644 --- a/lib/src/objects/parse_object.dart +++ b/lib/src/objects/parse_object.dart @@ -104,8 +104,7 @@ class ParseObject extends ParseBase implements ParseCloneable { if (response != null) { if (response.success) { _savingChanges.clear(); - } - else { + } else { _revertSavingChanges(); } return response; @@ -163,9 +162,9 @@ class ParseObject extends ParseBase implements ParseCloneable { final List requests = chunk.map((ParseObject obj) { return obj._getRequestJson(obj.objectId == null ? 'POST' : 'PUT'); }).toList(); - chunk.forEach((ParseObject obj) { + for (ParseObject obj in chunk) { obj._saveChanges(); - }); + } final ParseResponse response = await batchRequest(requests, chunk); totalResponse.success &= response.success; if (response.success) { @@ -175,16 +174,15 @@ class ParseObject extends ParseBase implements ParseCloneable { if (response.results[i] is ParseError) { // Batch request succeed, but part of batch failed. chunk[i]._revertSavingChanges(); - } - else { + } else { chunk[i]._savingChanges.clear(); } } } else { // If there was an error, we want to roll forward the save changes before rethrowing. - chunk.forEach((ParseObject obj) { + for (ParseObject obj in chunk) { obj._revertSavingChanges(); - }); + } totalResponse.statusCode = response.statusCode; totalResponse.error = response.error; } diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index f2b99e2f5..ead19be56 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -33,8 +33,7 @@ class ParseUser extends ParseObject implements ParseCloneable { @override dynamic clone(Map map) => - ParseUser.clone(map) - ..fromJson(map); + ParseUser.clone(map)..fromJson(map); static const String keyEmailVerified = 'emailVerified'; static const String keyUsername = 'username'; @@ -273,9 +272,8 @@ class ParseUser extends ParseObject implements ParseCloneable { final Response response = await _client.post( '${_client.data.serverUrl}$keyEndPointRequestPasswordReset', body: json.encode({keyVarEmail: emailAddress})); - return _handleResponse( - this, response, ParseApiRQ.requestPasswordReset, _debug, - parseClassName); + return _handleResponse(this, response, ParseApiRQ.requestPasswordReset, + _debug, parseClassName); } on Exception catch (e) { return handleException( e, ParseApiRQ.requestPasswordReset, _debug, parseClassName); @@ -334,7 +332,7 @@ class ParseUser extends ParseObject implements ParseCloneable { static Future _getUserFromLocalStore( {ParseCloneable cloneable}) async { - final CoreStore coreStore = await ParseCoreData().getStore(); + final CoreStore coreStore = ParseCoreData().getStore(); final String userJson = await coreStore.getString(keyParseStoreUser); if (userJson != null) {