Skip to content

Commit

Permalink
Revert "Fixed issue parse-community#696"
Browse files Browse the repository at this point in the history
This reverts commit 4e48925
  • Loading branch information
juriSacchetta committed Dec 9, 2022
1 parent 2d52e2d commit 9e9ef64
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 42 deletions.
14 changes: 4 additions & 10 deletions packages/dart/lib/src/objects/parse_base.dart
Expand Up @@ -139,8 +139,7 @@ abstract class ParseBase {
} else if (key == keyVarAcl) {
_getObjectData()[keyVarAcl] = ParseACL().fromJson(value);
} else {
_getObjectData()[key] =
parseDecode(value, key: key, parent: this as ParseObject);
_getObjectData()[key] = parseDecode(value);
}
});

Expand Down Expand Up @@ -196,17 +195,12 @@ abstract class ParseBase {
if (_getObjectData()[key] == value && !forceUpdate) {
return;
}
if (_getObjectData()[key] is! ParseRelation) {
_getObjectData()[key] =
ParseMergeTool().mergeWithPrevious(_unsavedChanges[key], value);
} else {
_unsavedChanges[key] =
ParseMergeTool().mergeWithPrevious(_unsavedChanges[key], value);
}
_getObjectData()[key] =
ParseMergeTool().mergeWithPrevious(_unsavedChanges[key], value);
} else {
_getObjectData()[key] = value;
_unsavedChanges[key] = _getObjectData()[key];
}
_unsavedChanges[key] = _getObjectData()[key];
}

/// Gets type [T] from objectData
Expand Down
3 changes: 0 additions & 3 deletions packages/dart/lib/src/objects/parse_object.dart
Expand Up @@ -310,9 +310,6 @@ class ParseObject extends ParseBase implements ParseCloneable {

/// Get the instance of ParseRelation class associated with the given key.
ParseRelation<T> getRelation<T extends ParseObject>(String key) {
if (_getObjectData().containsKey(key)) {
return _getObjectData()[key];
}
return ParseRelation<T>(parent: this, key: key);
}

Expand Down
46 changes: 19 additions & 27 deletions packages/dart/lib/src/objects/parse_relation.dart
Expand Up @@ -9,55 +9,47 @@ class ParseRelation<T extends ParseObject> {
_targetClass = parent.get<ParseRelation>(key)!.getTargetClass;
_parent = parent;
_key = key;
_parentObjectId = parent.objectId!;
}

ParseRelation.fromJson(
Map<String, dynamic> map, ParseObject parent, String key) {
_parent = parent;
_key = key;
ParseRelation.fromJson(Map<String, dynamic> map) {
_knownObjects = parseDecode(map['objects']);
_targetClass = map['className'];
_knownObjects = parseDecode(map['objects']) ?? {};
}

//The owning object of this ParseRelation
late final ParseObject _parent;
ParseObject? _parent;
// The object Id of the parent.
String _parentObjectId = '';
//The className of the target objects.
late final String _targetClass;
String? _targetClass;
//The key of the relation in the parent object.
late final String _key;
String _key = '';
//For offline caching, we keep track of every object we've known to be in the relation.
late final Set<T> _knownObjects;
Set<T>? _knownObjects = <T>{};

QueryBuilder getQuery() {
return QueryBuilder(ParseCoreData.instance.createObject(_targetClass))
..whereRelatedTo(_key, _parent.parseClassName, _parent.objectId!);
return QueryBuilder(ParseCoreData.instance.createObject(_targetClass!))
..whereRelatedTo(_key, _parent!.parseClassName, _parentObjectId);
}

void add(T object) {
_parent.addRelation(_key, [object]);
_knownObjects.add(object);
_targetClass = object.parseClassName;
_knownObjects!.add(object);
_parent!.addRelation(_key, _knownObjects!.toList());
}

void remove(T object) {
_parent.removeRelation(_key, [object]);
_knownObjects.remove(object);
}

void addAll(List<T> object) {
_parent.addRelation(_key, object);
_knownObjects.addAll(object);
}

void removeAll(List<T> object) {
_parent.removeRelation(_key, object);
_knownObjects.removeAll(object);
_targetClass = object.parseClassName;
_knownObjects!.remove(object);
_parent!.removeRelation(_key, _knownObjects!.toList());
}

String get getTargetClass => _targetClass;
String get getTargetClass => _targetClass ?? '';

Map<String, dynamic> toJson() => <String, dynamic>{
'__type': keyRelation,
'className': _targetClass,
'objects': parseEncode(_knownObjects.toList())
'objects': parseEncode(_knownObjects?.toList())
};
}
4 changes: 2 additions & 2 deletions packages/dart/lib/src/utils/parse_decoder.dart
Expand Up @@ -17,7 +17,7 @@ Map<String, dynamic> _convertJSONObjectToMap(Map<String, dynamic> object) {
}

/// Decode any type value
dynamic parseDecode(dynamic value, {String? key, ParseObject? parent}) {
dynamic parseDecode(dynamic value) {
if (value is List) {
return _convertJSONArrayToList(value);
}
Expand Down Expand Up @@ -73,7 +73,7 @@ dynamic parseDecode(dynamic value, {String? key, ParseObject? parent}) {
case 'Relation':
// ignore: always_specify_types
//TODO: bug with custom object relations
return ParseRelation.fromJson(map, parent!, key!);
return ParseRelation.fromJson(map);
}
}

Expand Down

0 comments on commit 9e9ef64

Please sign in to comment.