From 204fbb675203a556471771f68ae2ac32b2ee1531 Mon Sep 17 00:00:00 2001 From: Neelansh Sethi Date: Wed, 19 Jun 2024 20:08:06 +0530 Subject: [PATCH 1/2] add the useDeepEquality and equals fields for code generation --- mobx_codegen/lib/src/store_class_visitor.dart | 8 ++++++++ mobx_codegen/lib/src/template/observable.dart | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) 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 From a2190d66da609022d535e7a3e35b198f26843992 Mon Sep 17 00:00:00 2001 From: Neelansh Date: Wed, 19 Jun 2024 20:24:50 +0530 Subject: [PATCH 2/2] updated CHANGELOG.md and bump to 2.6.2 --- mobx_codegen/CHANGELOG.md | 4 ++++ mobx_codegen/lib/version.dart | 2 +- mobx_codegen/pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) 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/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