Skip to content

Commit 02e888e

Browse files
tomonaccimikehardy
andauthored
fix(analytics): allow custom event parameters for screen_view events (#5811)
* fix(analytics): allow custom event parameters for screen_view events Fixes #4594. * style(lint): fix prettier error Co-authored-by: Mike Hardy <[email protected]>
1 parent 89b104a commit 02e888e

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

packages/analytics/__tests__/analytics.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ describe('Analytics', function () {
137137
'firebase.analytics().logScreenView(*):',
138138
);
139139
});
140+
it('accepts arbitrary custom event parameters while rejecting defined parameters with wrong types', function () {
141+
expect(() => firebase.analytics().logScreenView({ foo: 'bar' })).not.toThrow();
142+
expect(() =>
143+
// @ts-ignore test
144+
firebase.analytics().logScreenView({ screen_name: 123, foo: 'bar' }),
145+
).toThrowError('firebase.analytics().logScreenView(*):');
146+
});
140147
});
141148

142149
describe('logAddPaymentInfo()', function () {

packages/analytics/lib/index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,10 @@ export namespace FirebaseAnalyticsTypes {
344344
* Current class associated with the view the user is currently viewing.
345345
*/
346346
screen_class?: string;
347+
/**
348+
* Custom event parameters.
349+
*/
350+
[key: string]: any;
347351
}
348352

349353
export interface RefundEventParameters {

packages/analytics/lib/structs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const Item = struct({
3232
price: 'number?',
3333
});
3434

35-
export const ScreenView = struct({
35+
export const ScreenView = struct.interface({
3636
screen_class: 'string?',
3737
screen_name: 'string?',
3838
});

0 commit comments

Comments
 (0)