diff --git a/.changeset/moody-icons-repeat.md b/.changeset/moody-icons-repeat.md new file mode 100644 index 00000000000..20927db37f3 --- /dev/null +++ b/.changeset/moody-icons-repeat.md @@ -0,0 +1,5 @@ +--- +'@firebase/analytics': patch +--- + +Correct `id` type in `setUserId` diff --git a/common/api-review/analytics.api.md b/common/api-review/analytics.api.md index 856815b4b5d..af301eebfa0 100644 --- a/common/api-review/analytics.api.md +++ b/common/api-review/analytics.api.md @@ -421,7 +421,7 @@ export interface SettingsOptions { } // @public -export function setUserId(analyticsInstance: Analytics, id: string, options?: AnalyticsCallOptions): void; +export function setUserId(analyticsInstance: Analytics, id: string | null, options?: AnalyticsCallOptions): void; // @public export function setUserProperties(analyticsInstance: Analytics, properties: CustomParams, options?: AnalyticsCallOptions): void; diff --git a/packages/analytics/src/api.ts b/packages/analytics/src/api.ts index 423092361d9..3e3119fcb78 100644 --- a/packages/analytics/src/api.ts +++ b/packages/analytics/src/api.ts @@ -177,7 +177,7 @@ export function setCurrentScreen( */ export function setUserId( analyticsInstance: Analytics, - id: string, + id: string | null, options?: AnalyticsCallOptions ): void { analyticsInstance = getModularInstance(analyticsInstance); diff --git a/packages/analytics/src/functions.test.ts b/packages/analytics/src/functions.test.ts index efce7145ce6..4deca1a9401 100644 --- a/packages/analytics/src/functions.test.ts +++ b/packages/analytics/src/functions.test.ts @@ -116,6 +116,18 @@ describe('FirebaseAnalytics methods', () => { }); }); + it('setUserId() with null (user) id calls gtag correctly (instance)', async () => { + await setUserId(gtagStub, fakeInitializationPromise, null); + expect(gtagStub).to.have.been.calledWith( + GtagCommand.CONFIG, + fakeMeasurementId, + { + 'user_id': null, + update: true + } + ); + }); + it('setUserId() calls gtag correctly (instance)', async () => { await setUserId(gtagStub, fakeInitializationPromise, 'user123'); expect(gtagStub).to.have.been.calledWith( @@ -137,6 +149,15 @@ describe('FirebaseAnalytics methods', () => { }); }); + it('setUserId() with null (user) id calls gtag correctly (global)', async () => { + await setUserId(gtagStub, fakeInitializationPromise, null, { + global: true + }); + expect(gtagStub).to.be.calledWith(GtagCommand.SET, { + 'user_id': null + }); + }); + it('setUserProperties() calls gtag correctly (instance)', async () => { await setUserProperties(gtagStub, fakeInitializationPromise, { 'currency': 'USD',