diff --git a/packages/react/src/data-connect/types.ts b/packages/react/src/data-connect/types.ts index 1abd2e4c..10d78f80 100644 --- a/packages/react/src/data-connect/types.ts +++ b/packages/react/src/data-connect/types.ts @@ -13,3 +13,12 @@ export type FlattenedMutationResult = Omit< "data" | "toJSON" > & Data; + +export enum CallerSdkType { + Base, // Core JS SDK + Generated, // Generated JS SDK + TanstackReactCore, // Tanstack non-generated React SDK + GeneratedReact, // Generated React SDK + TanstackAngularCore, // Tanstack non-generated Angular SDK + GeneratedAngular // Generated Angular SDK +} \ No newline at end of file diff --git a/packages/react/src/data-connect/useDataConnectMutation.ts b/packages/react/src/data-connect/useDataConnectMutation.ts index d277d4c9..19c522c1 100644 --- a/packages/react/src/data-connect/useDataConnectMutation.ts +++ b/packages/react/src/data-connect/useDataConnectMutation.ts @@ -10,7 +10,7 @@ import { type QueryRef, executeMutation, } from "firebase/data-connect"; -import type { FlattenedMutationResult } from "./types"; +import { CallerSdkType, type FlattenedMutationResult } from "./types"; export type useDataConnectMutationOptions< TData = unknown, @@ -48,10 +48,10 @@ export function useDataConnectMutation< FlattenedMutationResult, FirebaseError, Variables - > + >, + _callerSdkType: CallerSdkType = CallerSdkType.TanstackReactCore ) { const queryClient = useQueryClient(); - return useMutation< FlattenedMutationResult, FirebaseError, @@ -78,6 +78,9 @@ export function useDataConnectMutation< }, mutationFn: async (variables) => { const mutationRef = typeof ref === "function" ? ref(variables) : ref; + + // @ts-expect-error function is hidden under `DataConnect`. + mutationRef.dataConnect._setCallerSdkType(_callerSdkType); const response = await executeMutation(mutationRef); return { diff --git a/packages/react/src/data-connect/useDataConnectQuery.ts b/packages/react/src/data-connect/useDataConnectQuery.ts index 31ca7bb1..95883ec4 100644 --- a/packages/react/src/data-connect/useDataConnectQuery.ts +++ b/packages/react/src/data-connect/useDataConnectQuery.ts @@ -6,7 +6,8 @@ import { executeQuery, } from "firebase/data-connect"; import type { PartialBy } from "../../utils"; -import type { FlattenedQueryResult } from "./types"; +import { CallerSdkType, type FlattenedQueryResult } from "./types"; + export type useDataConnectQueryOptions< TData = unknown, @@ -19,6 +20,7 @@ export function useDataConnectQuery( FlattenedQueryResult, FirebaseError >, + _callerSdkType: CallerSdkType = CallerSdkType.TanstackReactCore ) { let queryRef: QueryRef; let initialData: FlattenedQueryResult | undefined; @@ -34,7 +36,8 @@ export function useDataConnectQuery( } else { queryRef = refOrResult; } - + // @ts-expect-error function is hidden under `DataConnect`. + queryRef.dataConnect._setCallerSdkType(_callerSdkType); return useQuery, FirebaseError>({ ...options, initialData,