From b327f33e451a93a115337f31001e2ccf60515d2b Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Fri, 10 Jul 2020 19:49:07 +0000 Subject: [PATCH 01/11] Improve --- .../platform_interface_collection_reference.dart | 12 ++++++++++++ .../platform_interface_document_reference.dart | 4 ++-- ...platform_interface_collection_reference_test.dart | 9 +++++++++ .../platform_interface_document_reference_test.dart | 9 +++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart index 7dbd95cf2d11..6efe6a245bb1 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart @@ -48,4 +48,16 @@ abstract class CollectionReferencePlatform extends QueryPlatform { DocumentReferencePlatform doc([String path]) { throw UnimplementedError("doc() is not implemented"); } + + @override + bool operator ==(dynamic o) => + o is CollectionReferencePlatform && + o.firestore == firestore && + o._pointer == _pointer; + + @override + int get hashCode => _pointer.hashCode; + + @override + String toString() => '$CollectionReferencePlatform($path)'; } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart index 2162346ef62f..a8f56902f6ec 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart @@ -98,10 +98,10 @@ abstract class DocumentReferencePlatform extends PlatformInterface { bool operator ==(dynamic o) => o is DocumentReferencePlatform && o.firestore == firestore && - o.path == path; + o._pointer == _pointer; @override - int get hashCode => path.hashCode; + int get hashCode => _pointer.hashCode; @override String toString() => '$DocumentReferencePlatform($path)'; diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart index 85ac2430ebbb..06bc33fc9fcd 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart @@ -42,6 +42,15 @@ void main() { expect(collection.id, equals(_kCollectionId)); }); + test('==', () { + final other = CollectionReferencePlatform( + FirebaseFirestorePlatform.instance, + '/$_kCollectionId', + ); + final collection = TestCollectionReference._(); + expect(other, equals(collection)); + }); + test("parent", () { final collection = TestSubcollectionReference._(); final parent = collection.parent; diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart index 2fe6df72b480..de7b1cf817da 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart @@ -37,6 +37,15 @@ void main() { expect(document.path, equals("$_kCollectionId/$_kDocumentId")); }); + test('==', () { + final other = DocumentReferencePlatform( + FirebaseFirestorePlatform.instance, + '/$_kCollectionId/$_kDocumentId', + ); + final reference = TestDocumentReference._(); + expect(other, equals(reference)); + }); + test("id", () { final document = TestDocumentReference._(); expect(document.id, equals(_kDocumentId)); From 87fefc1c3c595b7166dd8c2fc874cb3712b048b9 Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Fri, 10 Jul 2020 20:03:56 +0000 Subject: [PATCH 02/11] Fix formatting --- .../platform_interface_collection_reference.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart index 6efe6a245bb1..abe77f610723 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart @@ -52,8 +52,8 @@ abstract class CollectionReferencePlatform extends QueryPlatform { @override bool operator ==(dynamic o) => o is CollectionReferencePlatform && - o.firestore == firestore && - o._pointer == _pointer; + o.firestore == firestore && + o._pointer == _pointer; @override int get hashCode => _pointer.hashCode; From 70947b1b06aa2fba546ddb7978140589f83c526f Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Fri, 10 Jul 2020 20:19:13 +0000 Subject: [PATCH 03/11] Fix abstract --- ...tform_interface_collection_reference_test.dart | 14 ++++++++++---- ...latform_interface_document_reference_test.dart | 15 +++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart index 06bc33fc9fcd..3e5539cd38fb 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_collection_reference_test.dart @@ -17,6 +17,15 @@ class TestCollectionReference extends CollectionReferencePlatform { : super(FirebaseFirestorePlatform.instance, '$_kCollectionId'); } +/// Collection reference pointing to the same collection as +/// [TestCollectionReference]. +/// +/// However, this has a leading `/` for testing path equality. +class ShadowTestCollectionReference extends CollectionReferencePlatform { + ShadowTestCollectionReference._() + : super(FirebaseFirestorePlatform.instance, '/$_kCollectionId'); +} + class TestSubcollectionReference extends CollectionReferencePlatform { TestSubcollectionReference._() : super(FirebaseFirestorePlatform.instance, @@ -43,10 +52,7 @@ void main() { }); test('==', () { - final other = CollectionReferencePlatform( - FirebaseFirestorePlatform.instance, - '/$_kCollectionId', - ); + final other = ShadowTestCollectionReference._(); final collection = TestCollectionReference._(); expect(other, equals(collection)); }); diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart index de7b1cf817da..b2e9adf161c7 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart @@ -17,6 +17,16 @@ class TestDocumentReference extends DocumentReferencePlatform { '$_kCollectionId/$_kDocumentId'); } +/// Collection reference pointing to the same collection as +/// [TestDocumentReference]. +/// +/// However, this has a leading `/` for testing path equality. +class ShadowTestDocumentReference extends DocumentReferencePlatform { + TestDocumentReference._() + : super(FirebaseFirestorePlatform.instance, + '/$_kCollectionId/$_kDocumentId'); +} + void main() { initializeMethodChannel(); @@ -38,10 +48,7 @@ void main() { }); test('==', () { - final other = DocumentReferencePlatform( - FirebaseFirestorePlatform.instance, - '/$_kCollectionId/$_kDocumentId', - ); + final other = ShadowTestDocumentReference._(); final reference = TestDocumentReference._(); expect(other, equals(reference)); }); From 604f6141eacc907a2ce7bffc0e373b1054ea9f2a Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Fri, 10 Jul 2020 20:25:23 +0000 Subject: [PATCH 04/11] Fix refactor --- .../platform_interface_document_reference_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart index b2e9adf161c7..badd797d12a7 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart @@ -22,7 +22,7 @@ class TestDocumentReference extends DocumentReferencePlatform { /// /// However, this has a leading `/` for testing path equality. class ShadowTestDocumentReference extends DocumentReferencePlatform { - TestDocumentReference._() + ShadowTestDocumentReference._() : super(FirebaseFirestorePlatform.instance, '/$_kCollectionId/$_kDocumentId'); } From 1b39881e94c77e00393824f907ce37741990a062 Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Fri, 10 Jul 2020 20:45:19 +0000 Subject: [PATCH 05/11] Fix format --- .../platform_interface_document_reference_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart index badd797d12a7..05fbfeff24c2 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/platform_interface_tests/platform_interface_document_reference_test.dart @@ -24,7 +24,7 @@ class TestDocumentReference extends DocumentReferencePlatform { class ShadowTestDocumentReference extends DocumentReferencePlatform { ShadowTestDocumentReference._() : super(FirebaseFirestorePlatform.instance, - '/$_kCollectionId/$_kDocumentId'); + '/$_kCollectionId/$_kDocumentId'); } void main() { From 1ad608c205aa0e1d389ed6f5439d8962ad634b22 Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Tue, 14 Jul 2020 10:19:23 +0000 Subject: [PATCH 06/11] Update platform_interface_document_reference.dart --- .../platform_interface_document_reference.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart index a8f56902f6ec..2162346ef62f 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart @@ -98,10 +98,10 @@ abstract class DocumentReferencePlatform extends PlatformInterface { bool operator ==(dynamic o) => o is DocumentReferencePlatform && o.firestore == firestore && - o._pointer == _pointer; + o.path == path; @override - int get hashCode => _pointer.hashCode; + int get hashCode => path.hashCode; @override String toString() => '$DocumentReferencePlatform($path)'; From af4645e922a9152324e394c0fc931c95317d928e Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Tue, 14 Jul 2020 10:19:47 +0000 Subject: [PATCH 07/11] Update platform_interface_collection_reference.dart --- .../platform_interface_collection_reference.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart index abe77f610723..a761115bea07 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart @@ -53,10 +53,10 @@ abstract class CollectionReferencePlatform extends QueryPlatform { bool operator ==(dynamic o) => o is CollectionReferencePlatform && o.firestore == firestore && - o._pointer == _pointer; + o.path == path; @override - int get hashCode => _pointer.hashCode; + int get hashCode => path.hashCode; @override String toString() => '$CollectionReferencePlatform($path)'; From 51bce7f6aab405ca0b4b1cef07435b373c31d96c Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Tue, 14 Jul 2020 10:22:22 +0000 Subject: [PATCH 08/11] Update CHANGELOG.md --- packages/cloud_firestore/cloud_firestore/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md index c36855d771f9..16e7e5ce4223 100644 --- a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md +++ b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md @@ -1,5 +1,9 @@ ## [UNPUBLISHED] +- **FIX**: Collection reference `==` operator. + +## [UNPUBLISHED] + Along with the below changes, the plugin has undergone a quality of life update to better support exceptions thrown. Any Firestore specific errors now return a `FirebaseException`, allowing you to directly access the code (e.g. `permission-denied`) and message. **`Firestore`**: From dd31ef2e26a44d4672d58a8d89ed749227ec62e6 Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Tue, 14 Jul 2020 10:25:28 +0000 Subject: [PATCH 09/11] Update CHANGELOG.md --- packages/cloud_firestore/cloud_firestore/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md index 16e7e5ce4223..77a5778cb2d8 100644 --- a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md +++ b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md @@ -2,7 +2,7 @@ - **FIX**: Collection reference `==` operator. -## [UNPUBLISHED] +## 0.14.0-dev.1 Along with the below changes, the plugin has undergone a quality of life update to better support exceptions thrown. Any Firestore specific errors now return a `FirebaseException`, allowing you to directly access the code (e.g. `permission-denied`) and message. From ca8c9df3ac48a12f6f57742a42f73d0ad4d31406 Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Wed, 15 Jul 2020 09:11:58 +0000 Subject: [PATCH 10/11] Update CHANGELOG.md --- packages/cloud_firestore/cloud_firestore/CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md index 77a5778cb2d8..a5d95d88a697 100644 --- a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md +++ b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md @@ -1,7 +1,6 @@ ## [UNPUBLISHED] -- **FIX**: Collection reference `==` operator. - +- **FIX**: Added `==` operator override to `CollectionReferencePlatform`. ## 0.14.0-dev.1 Along with the below changes, the plugin has undergone a quality of life update to better support exceptions thrown. Any Firestore specific errors now return a `FirebaseException`, allowing you to directly access the code (e.g. `permission-denied`) and message. From 6b051cad20627555791e0f422d30e015579d703d Mon Sep 17 00:00:00 2001 From: creativecreatorormaybenot Date: Wed, 15 Jul 2020 09:12:27 +0000 Subject: [PATCH 11/11] Update CHANGELOG.md --- packages/cloud_firestore/cloud_firestore/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md index a5d95d88a697..6ee31980abca 100644 --- a/packages/cloud_firestore/cloud_firestore/CHANGELOG.md +++ b/packages/cloud_firestore/cloud_firestore/CHANGELOG.md @@ -1,6 +1,7 @@ ## [UNPUBLISHED] - **FIX**: Added `==` operator override to `CollectionReferencePlatform`. + ## 0.14.0-dev.1 Along with the below changes, the plugin has undergone a quality of life update to better support exceptions thrown. Any Firestore specific errors now return a `FirebaseException`, allowing you to directly access the code (e.g. `permission-denied`) and message.