Skip to content

Commit 04a0d04

Browse files
Introduce different UserDataWriters
1 parent 30c25d2 commit 04a0d04

File tree

13 files changed

+108
-119
lines changed

13 files changed

+108
-119
lines changed

packages/firestore/exp/src/api/reference.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import {
3636
CollectionReference,
3737
doc,
3838
DocumentReference,
39-
newExpUserDataWriter,
4039
newUserDataReader,
4140
Query,
4241
SetOptions,
@@ -58,13 +57,13 @@ import {
5857
Unsubscribe
5958
} from '../../../src/api/observer';
6059
import {
61-
getEventManager,
6260
executeQueryFromCache,
6361
executeQueryViaSnapshotListener,
64-
readDocumentFromCache,
65-
readDocumentViaSnapshotListener,
62+
firestoreClientWrite,
63+
getEventManager,
6664
getLocalStore,
67-
firestoreClientWrite
65+
readDocumentFromCache,
66+
readDocumentViaSnapshotListener
6867
} from '../../../src/core/firestore_client';
6968
import {
7069
newQueryForPath,
@@ -81,6 +80,13 @@ import {
8180
} from '../../../src/core/event_manager';
8281
import { FirestoreError } from '../../../src/util/error';
8382
import { Compat } from '../../../src/compat/compat';
83+
import { ExpUserDataWriter } from '../../../src/api/user_data_writer';
84+
85+
export {
86+
DocumentReference,
87+
CollectionReference,
88+
Query
89+
} from '../../../lite/src/api/reference';
8490

8591
/**
8692
* An options object that can be passed to {@link onSnapshot()} and {@link
@@ -141,7 +147,7 @@ export function getDocFromCache<T>(
141147
): Promise<DocumentSnapshot<T>> {
142148
const firestore = cast(reference.firestore, FirebaseFirestore);
143149
const client = ensureFirestoreConfigured(firestore);
144-
const userDataWriter = newExpUserDataWriter(firestore, reference._converter);
150+
const userDataWriter = new ExpUserDataWriter(firestore);
145151

146152
const deferred = new Deferred<Document | null>();
147153
firestore._queue.enqueueAndForget(async () => {
@@ -206,7 +212,7 @@ export function getDocFromServer<T>(
206212
export function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>> {
207213
const firestore = cast(query.firestore, FirebaseFirestore);
208214
const client = ensureFirestoreConfigured(firestore);
209-
const userDataWriter = newExpUserDataWriter(firestore, query._converter);
215+
const userDataWriter = new ExpUserDataWriter(firestore);
210216

211217
validateHasExplicitOrderByForLimitToLast(query._query);
212218

@@ -237,7 +243,7 @@ export function getDocsFromCache<T>(
237243
): Promise<QuerySnapshot<T>> {
238244
const firestore = cast(query.firestore, FirebaseFirestore);
239245
const client = ensureFirestoreConfigured(firestore);
240-
const userDataWriter = newExpUserDataWriter(firestore, query._converter);
246+
const userDataWriter = new ExpUserDataWriter(firestore);
241247

242248
const deferred = new Deferred<ViewSnapshot>();
243249
firestore._queue.enqueueAndForget(async () => {
@@ -260,7 +266,7 @@ export function getDocsFromServer<T>(
260266
): Promise<QuerySnapshot<T>> {
261267
const firestore = cast(query.firestore, FirebaseFirestore);
262268
const client = ensureFirestoreConfigured(firestore);
263-
const userDataWriter = newExpUserDataWriter(firestore, query._converter);
269+
const userDataWriter = new ExpUserDataWriter(firestore);
264270

265271
const deferred = new Deferred<ViewSnapshot>();
266272
firestore._queue.enqueueAndForget(async () => {
@@ -707,10 +713,7 @@ export function onSnapshot<T>(
707713
} else {
708714
firestore = cast(reference.firestore, FirebaseFirestore);
709715
internalQuery = reference._query;
710-
const userDataWriter = newExpUserDataWriter(
711-
firestore,
712-
reference._converter
713-
);
716+
const userDataWriter = new ExpUserDataWriter(firestore);
714717

715718
observer = {
716719
next: snapshot => {
@@ -846,7 +849,7 @@ function convertToDocSnapshot<T>(
846849
);
847850
const doc = snapshot.docs.get(ref._key);
848851

849-
const userDataWriter = newExpUserDataWriter(firestore, ref._converter);
852+
const userDataWriter = new ExpUserDataWriter(firestore);
850853
return new DocumentSnapshot(
851854
firestore,
852855
userDataWriter,

packages/firestore/exp/src/api/snapshot.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import { DocumentKey } from '../../../src/model/document_key';
1919
import { Document } from '../../../src/model/document';
20-
import { UserDataWriter } from '../../../src/api/user_data_writer';
20+
import { AbstractUserDataWriter } from '../../../src/api/user_data_writer';
2121
import {
2222
DocumentSnapshot as LiteDocumentSnapshot,
2323
fieldPathFromArgument
@@ -181,7 +181,7 @@ export class DocumentSnapshot<T = DocumentData> extends LiteDocumentSnapshot<
181181

182182
constructor(
183183
readonly _firestore: FirebaseFirestore,
184-
userDataWriter: UserDataWriter,
184+
userDataWriter: AbstractUserDataWriter,
185185
key: DocumentKey,
186186
document: Document | null,
187187
metadata: SnapshotMetadata,
@@ -328,7 +328,7 @@ export class QuerySnapshot<T = DocumentData> {
328328

329329
constructor(
330330
readonly _firestore: FirebaseFirestore,
331-
readonly _userDataWriter: UserDataWriter,
331+
readonly _userDataWriter: AbstractUserDataWriter,
332332
query: Query<T>,
333333
readonly _snapshot: ViewSnapshot
334334
) {

packages/firestore/exp/src/api/transaction.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ import { Transaction as InternalTransaction } from '../../../src/core/transactio
2929
import { validateReference } from '../../../lite/src/api/write_batch';
3030
import { getDatastore } from '../../../lite/src/api/components';
3131
import { DocumentReference } from '../../../lite/src/api/reference';
32-
import { UserDataWriter } from '../../../src/api/user_data_writer';
33-
import { Bytes } from '../../../lite/src/api/bytes';
32+
import { ExpUserDataWriter } from '../../../src/api/user_data_writer';
3433

3534
/**
3635
* A reference to a transaction.
@@ -58,11 +57,7 @@ export class Transaction extends LiteTransaction {
5857
*/
5958
get<T>(documentRef: DocumentReference<T>): Promise<DocumentSnapshot<T>> {
6059
const ref = validateReference<T>(documentRef, this._firestore);
61-
const userDataWriter = new UserDataWriter(
62-
this._firestore._databaseId,
63-
key => new DocumentReference(this._firestore, ref._converter, key),
64-
bytes => new Bytes(bytes)
65-
);
60+
const userDataWriter = new ExpUserDataWriter(this._firestore);
6661
return super
6762
.get(documentRef)
6863
.then(

packages/firestore/lite/src/api/reference.ts

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import {
2323
parseSetData,
2424
parseUpdateData,
2525
parseUpdateVarargs,
26-
UntypedFirestoreDataConverter,
2726
UserDataReader
2827
} from '../../../src/api/user_data_reader';
2928
import {
@@ -79,8 +78,7 @@ import {
7978
import { newSerializer } from '../../../src/platform/serializer';
8079
import { Code, FirestoreError } from '../../../src/util/error';
8180
import { getDatastore } from './components';
82-
import { UserDataWriter } from '../../../src/api/user_data_writer';
83-
import { Bytes } from './bytes';
81+
import { LiteUserDataWriter } from '../../../src/api/user_data_writer';
8482

8583
/**
8684
* Document data (for use with {@link setDoc()}) consists of fields mapped to
@@ -916,10 +914,7 @@ export function getDoc<T>(
916914
reference: DocumentReference<T>
917915
): Promise<DocumentSnapshot<T>> {
918916
const datastore = getDatastore(reference.firestore);
919-
const userDataWriter = newExpUserDataWriter(
920-
reference.firestore,
921-
reference._converter
922-
);
917+
const userDataWriter = new LiteUserDataWriter(reference.firestore);
923918

924919
return invokeBatchGetDocumentsRpc(datastore, [reference._key]).then(
925920
result => {
@@ -952,10 +947,7 @@ export function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>> {
952947
validateHasExplicitOrderByForLimitToLast(query._query);
953948

954949
const datastore = getDatastore(query.firestore);
955-
const userDataWriter = newExpUserDataWriter(
956-
query.firestore,
957-
query._converter
958-
);
950+
const userDataWriter = new LiteUserDataWriter(query.firestore);
959951
return invokeRunQueryRpc(datastore, query._query).then(result => {
960952
const docs = result.map(
961953
doc =>
@@ -1247,14 +1239,3 @@ export function newUserDataReader(
12471239
serializer
12481240
);
12491241
}
1250-
1251-
export function newExpUserDataWriter<T>(
1252-
firestore: FirebaseFirestore,
1253-
converter: UntypedFirestoreDataConverter<T> | null
1254-
): UserDataWriter {
1255-
return new UserDataWriter(
1256-
firestore._databaseId,
1257-
key => new DocumentReference(firestore, converter, key),
1258-
bytes => new Bytes(bytes)
1259-
);
1260-
}

packages/firestore/lite/src/api/snapshot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
import { FieldPath } from './field_path';
2727
import { DocumentKey } from '../../../src/model/document_key';
2828
import { Document } from '../../../src/model/document';
29-
import { UserDataWriter } from '../../../src/api/user_data_writer';
29+
import { AbstractUserDataWriter } from '../../../src/api/user_data_writer';
3030
import { FieldPath as InternalFieldPath } from '../../../src/model/path';
3131
import {
3232
fieldPathFromDotSeparatedString,
@@ -118,7 +118,7 @@ export class DocumentSnapshot<T = DocumentData> {
118118

119119
constructor(
120120
public _firestore: FirebaseFirestore,
121-
public _userDataWriter: UserDataWriter,
121+
public _userDataWriter: AbstractUserDataWriter,
122122
public _key: DocumentKey,
123123
public _document: Document | null,
124124
public _converter: UntypedFirestoreDataConverter<T> | null

packages/firestore/lite/src/api/transaction.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ import { Deferred } from '../../../src/util/promise';
3737
import { validateReference } from './write_batch';
3838
import {
3939
DocumentReference,
40-
newExpUserDataWriter,
4140
newUserDataReader,
4241
SetOptions,
4342
UpdateData
4443
} from './reference';
4544
import { FieldPath } from './field_path';
4645
import { getDatastore } from './components';
46+
import { LiteUserDataWriter } from '../../../src/api/user_data_writer';
4747

4848
// TODO(mrschmidt) Consider using `BaseTransaction` as the base class in the
4949
// legacy SDK.
@@ -78,10 +78,7 @@ export class Transaction {
7878
*/
7979
get<T>(documentRef: DocumentReference<T>): Promise<DocumentSnapshot<T>> {
8080
const ref = validateReference(documentRef, this._firestore);
81-
const userDataWriter = newExpUserDataWriter(
82-
this._firestore,
83-
documentRef._converter
84-
);
81+
const userDataWriter = new LiteUserDataWriter(this._firestore);
8582
return this._transaction
8683
.lookup([ref._key])
8784
.then((docs: MaybeDocument[]) => {

packages/firestore/src/api/database.ts

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { Value as ProtoValue } from '../protos/firestore_proto_api';
1919

2020
import { FirebaseApp } from '@firebase/app-types';
2121
import { _FirebaseApp, FirebaseService } from '@firebase/app-types/private';
22-
import { Blob } from './blob';
2322
import { DatabaseId } from '../core/database_info';
2423
import { ListenOptions } from '../core/event_manager';
2524
import {
@@ -462,7 +461,7 @@ export class Transaction implements PublicTransaction {
462461
documentRef,
463462
this._firestore
464463
);
465-
const userDataWriter = newUserDataWriter(this._firestore, ref._converter);
464+
const userDataWriter = new UserDataWriter(this._firestore);
466465
return this._transaction
467466
.lookup([ref._key])
468467
.then((docs: MaybeDocument[]) => {
@@ -758,10 +757,7 @@ export class DocumentReference<T = PublicDocumentData>
758757
delegate: ExpDocumentReference<T>
759758
) {
760759
super(delegate);
761-
this._userDataWriter = newUserDataWriter(
762-
firestore,
763-
this._delegate._converter
764-
);
760+
this._userDataWriter = new UserDataWriter(firestore);
765761
}
766762

767763
static forPath<U>(
@@ -1819,7 +1815,7 @@ export class QuerySnapshot<T = PublicDocumentData>
18191815
private readonly _snapshot: ViewSnapshot,
18201816
private readonly _converter: PublicFirestoreDataConverter<T> | null
18211817
) {
1822-
this._userDataWriter = newUserDataWriter(this._firestore, this._converter);
1818+
this._userDataWriter = new UserDataWriter(this._firestore);
18231819
this.metadata = new SnapshotMetadata(
18241820
_snapshot.hasPendingWrites,
18251821
_snapshot.fromCache
@@ -2147,14 +2143,3 @@ export function applyFirestoreDataConverter<T>(
21472143
}
21482144
return convertedValue;
21492145
}
2150-
2151-
function newUserDataWriter<T>(
2152-
firestore: Firestore,
2153-
converter: UntypedFirestoreDataConverter<T> | null
2154-
): UserDataWriter {
2155-
return new UserDataWriter(
2156-
firestore._databaseId,
2157-
key => DocumentReference.forKey(key, firestore, converter),
2158-
bytes => new Blob(bytes)
2159-
);
2160-
}

0 commit comments

Comments
 (0)