From b309d3a4406e377c67dd132fb7d9cf4c7c7c2848 Mon Sep 17 00:00:00 2001 From: Jackson Morgan Date: Wed, 20 Aug 2025 14:13:03 -0400 Subject: [PATCH] Exposed transaction dataset for useChange and added didChange to transaction dataset --- packages/react/src/methods/change/types.ts | 1 + .../src/methods/change/useChangeMatchObject.ts | 4 ++-- .../src/methods/change/useChangeMatchSubject.ts | 4 ++-- .../react/src/methods/change/useChangeSubject.ts | 4 ++-- .../subscribable-dataset/src/TransactionDataset.ts | 13 +++++++++++++ packages/subscribable-dataset/src/types.ts | 1 + 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/react/src/methods/change/types.ts b/packages/react/src/methods/change/types.ts index 690b8aa..5719939 100644 --- a/packages/react/src/methods/change/types.ts +++ b/packages/react/src/methods/change/types.ts @@ -8,6 +8,7 @@ export type useChangeReturn = [ Type, useChangeSetData, useChangeCommitData, + transactionDataset: ConnectedLdoTransactionDataset, ]; type BaseOtherType = LdoBase | LdSet; diff --git a/packages/react/src/methods/change/useChangeMatchObject.ts b/packages/react/src/methods/change/useChangeMatchObject.ts index add1195..79381d8 100644 --- a/packages/react/src/methods/change/useChangeMatchObject.ts +++ b/packages/react/src/methods/change/useChangeMatchObject.ts @@ -59,8 +59,8 @@ export function createUseChangeMatchObject( ); return useMemo( - () => [ldObject, setData, commitData], - [ldObject, setData, commitData], + () => [ldObject, setData, commitData, transactionDataset], + [ldObject, setData, commitData, transactionDataset], ); }; } diff --git a/packages/react/src/methods/change/useChangeMatchSubject.ts b/packages/react/src/methods/change/useChangeMatchSubject.ts index df49c32..0addb67 100644 --- a/packages/react/src/methods/change/useChangeMatchSubject.ts +++ b/packages/react/src/methods/change/useChangeMatchSubject.ts @@ -61,8 +61,8 @@ export function createUseChangeMatchSubject( ); return useMemo( - () => [ldObject, setData, commitData], - [ldObject, setData, commitData], + () => [ldObject, setData, commitData, transactionDataset], + [ldObject, setData, commitData, transactionDataset], ); }; } diff --git a/packages/react/src/methods/change/useChangeSubject.ts b/packages/react/src/methods/change/useChangeSubject.ts index babcbb5..8c8f40b 100644 --- a/packages/react/src/methods/change/useChangeSubject.ts +++ b/packages/react/src/methods/change/useChangeSubject.ts @@ -76,8 +76,8 @@ export function createUseChangeSubject( ); return useMemo( - () => [ldObject, setData, commitData], - [ldObject, setData, commitData], + () => [ldObject, setData, commitData, transactionDataset], + [ldObject, setData, commitData, transactionDataset], ); }; } diff --git a/packages/subscribable-dataset/src/TransactionDataset.ts b/packages/subscribable-dataset/src/TransactionDataset.ts index a4e1520..9e417c8 100644 --- a/packages/subscribable-dataset/src/TransactionDataset.ts +++ b/packages/subscribable-dataset/src/TransactionDataset.ts @@ -287,4 +287,17 @@ export class TransactionDataset public getChanges(): DatasetChanges { return this.datasetChanges; } + + /** + * Returns true if the transaction is holding changes that have yet to be committed. + * Returns false if no changes have yet been made to it. + */ + public hasChanges(): boolean { + return ( + ((this.datasetChanges.added && this.datasetChanges.added.size > 0) || + (this.datasetChanges.removed && + this.datasetChanges.removed.size > 0)) ?? + false + ); + } } diff --git a/packages/subscribable-dataset/src/types.ts b/packages/subscribable-dataset/src/types.ts index ce3d64d..bd40aef 100644 --- a/packages/subscribable-dataset/src/types.ts +++ b/packages/subscribable-dataset/src/types.ts @@ -166,4 +166,5 @@ export interface ITransactionDataset rollback(): void; commit(): void; getChanges(): DatasetChanges; + hasChanges(): boolean; }