Skip to content

Commit bdbc483

Browse files
authored
fix: Unhandled exception when saving a ParseObject but its nested object fails to save (#858)
1 parent 8d17772 commit bdbc483

21 files changed

+220
-38
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ unlinked_spec.ds
102102

103103
# macOS
104104
**/macos/Flutter/GeneratedPluginRegistrant.swift
105-
**/macos/flutter/ephemeral/
105+
**/macos/Flutter/ephemeral/
106106

107107
# Linux
108108
**/linux/flutter/ephemeral

packages/dart/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## [4.0.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-4.0.0...dart-4.0.1) (2023-03-20)
2+
3+
### Bug Fixes
4+
5+
* Unhandled exception when saving a `ParseObject` but its nested object fails to save ([#858](https://github.com/parse-community/Parse-SDK-Flutter/pull/858))
6+
17
## [4.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.14...dart-4.0.0) (2023-03-07)
28

39
### BREAKING CHANGES

packages/dart/lib/src/base/parse_constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of flutter_parse_sdk;
22

33
// Library
4-
const String keySdkVersion = '4.0.0';
4+
const String keySdkVersion = '4.0.1';
55
const String keyLibraryName = 'Flutter Parse SDK';
66

77
// End Points

packages/dart/lib/src/objects/response/parse_response_builder.dart

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,27 +54,40 @@ class _ParseResponseBuilder {
5454
}
5555

5656
/// Handles successful response with results
57-
ParseResponse _handleSuccess<T>(ParseResponse response, dynamic object,
58-
String responseBody, ParseApiRQ type) {
57+
ParseResponse _handleSuccess<T>(
58+
ParseResponse response,
59+
dynamic object,
60+
String responseBody,
61+
ParseApiRQ type,
62+
) {
5963
response.success = true;
6064

6165
final dynamic result = json.decode(responseBody);
6266

6367
if (type == ParseApiRQ.batch) {
6468
final List<dynamic>? list = result;
69+
6570
if (object is List && object.length == list!.length) {
6671
response.count = object.length;
6772
response.results = <dynamic>[];
73+
6874
for (int i = 0; i < object.length; i++) {
6975
final Map<String, dynamic> objectResult = list[i];
76+
7077
if (objectResult.containsKey('success')) {
7178
final T? item = _handleSingleResult<T>(
72-
object[i], objectResult['success'], false);
79+
object[i],
80+
objectResult['success'],
81+
false,
82+
);
83+
7384
response.results!.add(item);
7485
} else {
7586
final ParseError error = ParseError(
76-
code: objectResult[keyCode],
77-
message: objectResult[keyError].toString());
87+
code: objectResult[keyError][keyCode],
88+
message: objectResult[keyError][keyError].toString(),
89+
);
90+
7891
response.results!.add(error);
7992
}
8093
}

packages/dart/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: parse_server_sdk
22
description: Dart plugin for Parse Server, (https://parseplatform.org), (https://back4app.com)
3-
version: 4.0.0
3+
version: 4.0.1
44
homepage: https://github.com/parse-community/Parse-SDK-Flutter
55

66
environment:

packages/dart/test/src/objects/parse_object/parse_object_array_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import 'package:parse_server_sdk/parse_server_sdk.dart';
88
import 'package:test/test.dart';
99

1010
import '../../../parse_query_test.mocks.dart';
11-
import 'parse_object_test.dart';
1211
import '../../../test_utils.dart';
1312

1413
void main() {

packages/dart/test/src/objects/parse_object/parse_object_create_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:parse_server_sdk/parse_server_sdk.dart';
55
import 'package:test/test.dart';
66

77
import '../../../parse_query_test.mocks.dart';
8-
import 'parse_object_test.dart';
8+
import '../../../test_utils.dart';
99

1010
void main() {
1111
group('create()', () {

packages/dart/test/src/objects/parse_object/parse_object_delete_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:parse_server_sdk/parse_server_sdk.dart';
55
import 'package:test/test.dart';
66

77
import '../../../parse_query_test.mocks.dart';
8-
import 'parse_object_test.dart';
8+
import '../../../test_utils.dart';
99

1010
void main() {
1111
group('delete()', () {

packages/dart/test/src/objects/parse_object/parse_object_distinct_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:parse_server_sdk/parse_server_sdk.dart';
55
import 'package:test/test.dart';
66

77
import '../../../parse_query_test.mocks.dart';
8-
import 'parse_object_test.dart';
8+
import '../../../test_utils.dart';
99

1010
void main() {
1111
group('distinct()', () {

packages/dart/test/src/objects/parse_object/parse_object_fetch_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:parse_server_sdk/parse_server_sdk.dart';
55
import 'package:test/test.dart';
66

77
import '../../../parse_query_test.mocks.dart';
8-
import 'parse_object_test.dart';
8+
import '../../../test_utils.dart';
99

1010
void main() {
1111
group('fetch()', () {

0 commit comments

Comments
 (0)