From beb173794ce2cf60b41e43ccfc2b4e4eeda53224 Mon Sep 17 00:00:00 2001 From: Derek Burgman Date: Thu, 9 Jun 2022 01:08:03 -0500 Subject: [PATCH] fix: documentAccessorForTransaction/WriteBatch now accepts a Maybe value --- .../lib/common/firestore/accessor/document.ts | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/firebase/src/lib/common/firestore/accessor/document.ts b/packages/firebase/src/lib/common/firestore/accessor/document.ts index 91bbdb317..81e096462 100644 --- a/packages/firebase/src/lib/common/firestore/accessor/document.ts +++ b/packages/firebase/src/lib/common/firestore/accessor/document.ts @@ -8,7 +8,7 @@ import { DocumentReference, CollectionReference, Transaction, WriteBatch, Docume import { createOrUpdateWithAccessorSet, dataFromSnapshotStream, FirestoreDocumentDataAccessor } from './accessor'; import { CollectionReferenceRef, DocumentReferenceRef, FirestoreContextReference } from '../reference'; import { FirestoreDocumentContext } from './context'; -import { build } from '@dereekb/util'; +import { build, Maybe } from '@dereekb/util'; import { FirestoreModelNameRef, FirestoreModelIdentity, FirestoreModelIdentityRef } from '../collection/collection'; import { InterceptAccessorFactoryFunction } from './accessor.wrap'; @@ -276,17 +276,17 @@ export function firestoreDocumentAccessorFactory = FirestoreDocument, A extends LimitedFirestoreDocumentAccessor = LimitedFirestoreDocumentAccessor> { /** - * Creates a new FirestoreDocumentAccessor for a Transaction. + * Creates a new FirestoreDocumentAccessor for a Transaction. If transaction is null/undefined, an accessor with a default context is returned. */ - documentAccessorForTransaction(transaction: Transaction): A; + documentAccessorForTransaction(transaction: Maybe): A; } export type FirestoreDocumentAccessorForTransactionFactory = FirestoreDocument> = LimitedFirestoreDocumentAccessorForTransactionFactory>; export interface LimitedFirestoreDocumentAccessorForWriteBatchFactory = FirestoreDocument, A extends LimitedFirestoreDocumentAccessor = LimitedFirestoreDocumentAccessor> { /** - * Creates a new FirestoreDocumentAccessor for a WriteBatch. + * Creates a new FirestoreDocumentAccessor for a WriteBatch. If writeBatch is null/undefined an accessor with a default context is returned. */ - documentAccessorForWriteBatch(writeBatch: WriteBatch): A; + documentAccessorForWriteBatch(writeBatch: Maybe): A; } export type FirestoreDocumentAccessorForWriteBatchFactory = FirestoreDocument> = LimitedFirestoreDocumentAccessorForWriteBatchFactory>; @@ -306,11 +306,13 @@ export function firestoreDocumentAccessorContextExtension = FirestoreDocument>({ documentAccessor, firestoreAccessorDriver }: FirestoreDocumentAccessorContextExtensionConfig | LimitedFirestoreDocumentAccessorContextExtensionConfig) { return { documentAccessor, - documentAccessorForTransaction(transaction: Transaction) { - return documentAccessor(firestoreAccessorDriver.transactionContextFactory(transaction)); + documentAccessorForTransaction(transaction: Maybe) { + const context: Maybe> = transaction ? firestoreAccessorDriver.transactionContextFactory(transaction) : undefined; + return documentAccessor(context); }, - documentAccessorForWriteBatch(writeBatch: WriteBatch) { - return documentAccessor(firestoreAccessorDriver.writeBatchContextFactory(writeBatch)); + documentAccessorForWriteBatch(writeBatch: Maybe) { + const context: Maybe> = writeBatch ? firestoreAccessorDriver.writeBatchContextFactory(writeBatch) : undefined; + return documentAccessor(context); } }; } @@ -333,8 +335,8 @@ export abstract class AbstractFirestoreDocumentWithParent = FirestoreDocument> { loadDocument(): D; - loadDocumentForTransaction(transaction: Transaction): D; - loadDocumentForWriteBatch(writeBatch: WriteBatch): D; + loadDocumentForTransaction(transaction: Maybe): D; + loadDocumentForWriteBatch(writeBatch: Maybe): D; } export interface FirestoreSingleDocumentAccessorConfig = FirestoreDocument> { @@ -349,10 +351,10 @@ export function firestoreSingleDocumentAccessor): D { return accessors.documentAccessorForTransaction(transaction).loadDocumentForId(identifier); }, - loadDocumentForWriteBatch(writeBatch: WriteBatch): D { + loadDocumentForWriteBatch(writeBatch: Maybe): D { return accessors.documentAccessorForWriteBatch(writeBatch).loadDocumentForId(identifier); } };