diff --git a/mobx_codegen/CHANGELOG.md b/mobx_codegen/CHANGELOG.md index bfa7313c..e6c8ec53 100644 --- a/mobx_codegen/CHANGELOG.md +++ b/mobx_codegen/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.6.2 + +- Adds `useDeepEquality` and `equals` fields in code generation while creating observables by [@Neelansh](https://github.com/Neelansh-ns) + ## 2.6.1 - Upgrading packages and sdk diff --git a/mobx_codegen/lib/src/store_class_visitor.dart b/mobx_codegen/lib/src/store_class_visitor.dart index 39b93db2..5e332bad 100644 --- a/mobx_codegen/lib/src/store_class_visitor.dart +++ b/mobx_codegen/lib/src/store_class_visitor.dart @@ -103,6 +103,7 @@ class StoreClassVisitor extends SimpleElementVisitor { isReadOnly: _isObservableReadOnly(element), isLate: element.isLate, equals: _getEquals(element), + useDeepEquality: _doesObservableUseDeepEquality(element), ); _storeTemplate.observables.add(template); @@ -116,6 +117,13 @@ class StoreClassVisitor extends SimpleElementVisitor { ?.toBoolValue() ?? false; + bool _doesObservableUseDeepEquality(FieldElement element) => + _observableChecker + .firstAnnotationOfExact(element) + ?.getField('useDeepEquality') + ?.toBoolValue() ?? + false; + ExecutableElement? _getEquals(FieldElement element) => _observableChecker .firstAnnotationOfExact(element) ?.getField('equals') diff --git a/mobx_codegen/lib/src/template/observable.dart b/mobx_codegen/lib/src/template/observable.dart index 68e8efd8..a86c241d 100644 --- a/mobx_codegen/lib/src/template/observable.dart +++ b/mobx_codegen/lib/src/template/observable.dart @@ -72,10 +72,10 @@ class ObservableTemplate { return ''' @override set $name($type value) { - $atomName.reportWrite(value, super.$name, () { - super.$name = value; - }${equals != null ? ', equals: ${equals!.name}' : ''}${useDeepEquality != null ? ', useDeepEquality: $useDeepEquality' : ''}); - }'''; + $atomName.reportWrite(value, super.$name, () { + super.$name = value; + }${equals != null ? ', equals: ${equals!.enclosingElement.name != null ? '${equals!.enclosingElement.name}.' : ''}${equals!.name}' : ''}${useDeepEquality != null ? ', useDeepEquality: $useDeepEquality' : ''}); +}'''; } @override diff --git a/mobx_codegen/lib/version.dart b/mobx_codegen/lib/version.dart index 2bae6d5c..99454540 100644 --- a/mobx_codegen/lib/version.dart +++ b/mobx_codegen/lib/version.dart @@ -1,4 +1,4 @@ // Generated via set_version.dart. !!!DO NOT MODIFY BY HAND!!! /// The current version as per `pubspec.yaml`. -const version = '2.6.1'; +const version = '2.6.2'; diff --git a/mobx_codegen/pubspec.yaml b/mobx_codegen/pubspec.yaml index a1dc4479..c673423b 100644 --- a/mobx_codegen/pubspec.yaml +++ b/mobx_codegen/pubspec.yaml @@ -1,6 +1,6 @@ name: mobx_codegen description: Code generator for MobX that adds support for annotating your code with @observable, @computed, @action and also creating Store classes. -version: 2.6.1 +version: 2.6.2 repository: https://github.com/mobxjs/mobx.dart issue_tracker: https://github.com/mobxjs/mobx.dart/issues