From 70c372842162aee26544c598ed74669dc80c9f41 Mon Sep 17 00:00:00 2001 From: Brian Chen Date: Fri, 7 Feb 2020 14:47:12 -0800 Subject: [PATCH 1/4] allow coll.add --- packages/firestore/src/api/database.ts | 5 ++++- packages/firestore/test/integration/api/database.test.ts | 7 ++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/firestore/src/api/database.ts b/packages/firestore/src/api/database.ts index 99575a675ad..6fc11907499 100644 --- a/packages/firestore/src/api/database.ts +++ b/packages/firestore/src/api/database.ts @@ -2461,7 +2461,10 @@ export class CollectionReference extends Query add(value: T): Promise> { validateExactNumberOfArgs('CollectionReference.add', arguments, 1); - validateArgType('CollectionReference.add', 'object', 1, value); + const convertedValue = this._converter + ? this._converter.toFirestore(value) + : value; + validateArgType('CollectionReference.add', 'object', 1, convertedValue); const docRef = this.doc(); return docRef.set(value).then(() => docRef); } diff --git a/packages/firestore/test/integration/api/database.test.ts b/packages/firestore/test/integration/api/database.test.ts index 763201959ee..7213a3dd766 100644 --- a/packages/firestore/test/integration/api/database.test.ts +++ b/packages/firestore/test/integration/api/database.test.ts @@ -1214,12 +1214,9 @@ apiDescribe('Database', (persistence: boolean) => { it('for CollectionReference.withConverter()', () => { return withTestDb(persistence, async db => { - const docRef = db - .collection('posts') - .withConverter(postConverter) - .doc(); + const coll = db.collection('posts').withConverter(postConverter); - await docRef.set(new Post('post', 'author')); + const docRef = await coll.add(new Post('post', 'author')); const postData = await docRef.get(); const post = postData.data(); expect(post).to.not.equal(undefined); From 97965007950f78bde83440e1ef4b5dbd323fe9e5 Mon Sep 17 00:00:00 2001 From: Brian Chen Date: Fri, 7 Feb 2020 15:03:35 -0800 Subject: [PATCH 2/4] add changelog --- packages/firestore/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/firestore/CHANGELOG.md b/packages/firestore/CHANGELOG.md index 6c210345e54..7281ff0d962 100644 --- a/packages/firestore/CHANGELOG.md +++ b/packages/firestore/CHANGELOG.md @@ -1,4 +1,8 @@ # Unreleased +- [fixed] Fixed an issue where `CollectionReference.add()` would reject + custom types when using `withConverter()`. (#2606) + +# 1.9.3 - [fixed] Fixed an issue where auth credentials were not respected in some Firefox or Chrome extensions. (#1491) - [changed] Firestore previously required that every document read in a From 5c4bed9bb12e3760076eb155ceed9eb7abc7d0b9 Mon Sep 17 00:00:00 2001 From: Brian Chen Date: Mon, 10 Feb 2020 13:05:17 -0800 Subject: [PATCH 3/4] temporary using old emulator to verify that its broken --- scripts/emulator-testing/emulators/firestore-emulator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/emulator-testing/emulators/firestore-emulator.ts b/scripts/emulator-testing/emulators/firestore-emulator.ts index 5a7a0d9269e..c824ebedaf6 100644 --- a/scripts/emulator-testing/emulators/firestore-emulator.ts +++ b/scripts/emulator-testing/emulators/firestore-emulator.ts @@ -26,7 +26,7 @@ export class FirestoreEmulator extends Emulator { // Use locked version of emulator for test to be deterministic. // The latest version can be found from firestore emulator doc: // https://firebase.google.com/docs/firestore/security/test-rules-emulator - 'https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.10.4.jar', + 'https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.8.2.jar', port ); this.projectId = projectId; From 4c8f6f170c1b819b3f2b8bf946984c6ddb4bd162 Mon Sep 17 00:00:00 2001 From: Brian Chen Date: Mon, 10 Feb 2020 13:30:39 -0800 Subject: [PATCH 4/4] revert temporary emulator version change --- scripts/emulator-testing/emulators/firestore-emulator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/emulator-testing/emulators/firestore-emulator.ts b/scripts/emulator-testing/emulators/firestore-emulator.ts index c824ebedaf6..5a7a0d9269e 100644 --- a/scripts/emulator-testing/emulators/firestore-emulator.ts +++ b/scripts/emulator-testing/emulators/firestore-emulator.ts @@ -26,7 +26,7 @@ export class FirestoreEmulator extends Emulator { // Use locked version of emulator for test to be deterministic. // The latest version can be found from firestore emulator doc: // https://firebase.google.com/docs/firestore/security/test-rules-emulator - 'https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.8.2.jar', + 'https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.10.4.jar', port ); this.projectId = projectId;