Skip to content

Commit b782bb2

Browse files
authored
Tag PID to BQ delivery metric (#7788)
* Tag PID to BQ delivery metric * Make linter happy * Run format & add changeset * Update stupid-humans-fry.md
1 parent b2163b3 commit b782bb2

File tree

8 files changed

+72
-9
lines changed

8 files changed

+72
-9
lines changed

Diff for: .changeset/stupid-humans-fry.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@firebase/messaging': patch
3+
---
4+
5+
Tag product id for internal big query metric logging.

Diff for: packages/logger/.eslintrc.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* you may not use this file except in compliance with the License.
77
* You may obtain a copy of the License at
88
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
910
* http://www.apache.org/licenses/LICENSE-2.0
1011
*
1112
* Unless required by applicable law or agreed to in writing, software

Diff for: packages/messaging/src/helpers/externalizePayload.test.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ describe('externalizePayload', () => {
3535
// eslint-disable-next-line camelcase
3636
collapse_key: 'collapse',
3737
// eslint-disable-next-line camelcase
38-
fcmMessageId: 'mid'
38+
fcmMessageId: 'mid',
39+
// eslint-disable-next-line camelcase
40+
productId: 123
3941
};
4042

4143
const payload: MessagePayload = {
@@ -66,7 +68,9 @@ describe('externalizePayload', () => {
6668
// eslint-disable-next-line camelcase
6769
collapse_key: 'collapse',
6870
// eslint-disable-next-line camelcase
69-
fcmMessageId: 'mid'
71+
fcmMessageId: 'mid',
72+
// eslint-disable-next-line camelcase
73+
productId: 123
7074
};
7175

7276
const payload: MessagePayload = {
@@ -100,7 +104,9 @@ describe('externalizePayload', () => {
100104
// eslint-disable-next-line camelcase
101105
collapse_key: 'collapse',
102106
// eslint-disable-next-line camelcase
103-
fcmMessageId: 'mid'
107+
fcmMessageId: 'mid',
108+
// eslint-disable-next-line camelcase
109+
productId: 123
104110
};
105111

106112
const payload: MessagePayload = {

Diff for: packages/messaging/src/helpers/logToFirelog.ts

+21-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import {
2929
FcmEvent,
3030
LogEvent,
3131
LogRequest,
32-
LogResponse
32+
LogResponse,
33+
ComplianceData
3334
} from '../interfaces/logging-types';
3435

3536
import { MessagePayloadInternal } from '../interfaces/internal-message-payload';
@@ -162,7 +163,7 @@ export async function stageLog(
162163
await messaging.firebaseDependencies.installations.getId()
163164
);
164165

165-
createAndEnqueueLogEvent(messaging, fcmEvent);
166+
createAndEnqueueLogEvent(messaging, fcmEvent, internalPayload.productId);
166167
}
167168

168169
function createFcmEvent(
@@ -208,18 +209,35 @@ function createFcmEvent(
208209

209210
function createAndEnqueueLogEvent(
210211
messaging: MessagingService,
211-
fcmEvent: FcmEvent
212+
fcmEvent: FcmEvent,
213+
productId: number
212214
): void {
213215
const logEvent = {} as LogEvent;
214216

215217
/* eslint-disable camelcase */
216218
logEvent.event_time_ms = Math.floor(Date.now()).toString();
217219
logEvent.source_extension_json_proto3 = JSON.stringify(fcmEvent);
220+
221+
if (!!productId) {
222+
logEvent.compliance_data = buildComplianceData(productId);
223+
}
218224
// eslint-disable-next-line camelcase
219225

220226
messaging.logEvents.push(logEvent);
221227
}
222228

229+
function buildComplianceData(productId: number): ComplianceData {
230+
const complianceData: ComplianceData = {
231+
privacy_context: {
232+
prequest: {
233+
origin_associated_product_id: productId
234+
}
235+
}
236+
};
237+
238+
return complianceData;
239+
}
240+
223241
export function _createLogRequest(logEventQueue: LogEvent[]): LogRequest {
224242
const logRequest = {} as LogRequest;
225243

Diff for: packages/messaging/src/interfaces/internal-message-payload.ts

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export interface MessagePayloadInternal {
2828
isFirebaseMessaging?: boolean;
2929
from: string;
3030
fcmMessageId: string;
31+
productId: number;
3132
// eslint-disable-next-line camelcase
3233
collapse_key: string;
3334
}

Diff for: packages/messaging/src/interfaces/logging-types.ts

+15
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@ export interface LogEvent {
4646

4747
// A stringified json proto version of source_extension.
4848
source_extension_json_proto3: string;
49+
50+
// The compliance data associated with this event.
51+
compliance_data: ComplianceData;
52+
}
53+
54+
export interface ComplianceData {
55+
privacy_context: ExternalPrivacyContext;
56+
}
57+
58+
export interface ExternalPrivacyContext {
59+
prequest: ExternalPRequestContext;
60+
}
61+
62+
export interface ExternalPRequestContext {
63+
origin_associated_product_id: number;
4964
}
5065
/* eslint-enable camelcase */
5166

Diff for: packages/messaging/src/listeners/sw-listeners.test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ const DISPLAY_MESSAGE: MessagePayloadInternal = {
7777
// eslint-disable-next-line camelcase
7878
collapse_key: 'collapse',
7979
// eslint-disable-next-line camelcase
80-
fcmMessageId: 'mid'
80+
fcmMessageId: 'mid',
81+
productId: 123
8182
};
8283

8384
// maxActions is an experimental property and not part of the official

Diff for: packages/messaging/src/testing/fakes/logging-object.ts

+18-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,16 @@ import {
2222
FcmEvent,
2323
LogEvent,
2424
LogResponse,
25-
UserResponse
25+
UserResponse,
26+
ComplianceData
2627
} from '../../interfaces/logging-types';
2728

2829
export function getFakeLogEvent(): LogEvent {
2930
return {
3031
/* eslint-disable camelcase */
3132
event_time_ms: '0',
32-
source_extension_json_proto3: JSON.stringify(getFakeFcmEvent())
33+
source_extension_json_proto3: JSON.stringify(getFakeFcmEvent()),
34+
compliance_data: getFakeComplianceData()
3335
/* eslint-enable camelcase */
3436
};
3537
}
@@ -50,6 +52,20 @@ function getFakeFcmEvent(): FcmEvent {
5052
};
5153
}
5254

55+
function getFakeComplianceData(): ComplianceData {
56+
const fakeComplianceData: ComplianceData = {
57+
/* eslint-disable camelcase */
58+
privacy_context: {
59+
prequest: {
60+
origin_associated_product_id: 123
61+
}
62+
}
63+
/* eslint-enable camelcase */
64+
};
65+
66+
return fakeComplianceData;
67+
}
68+
5369
export function getSuccessResponse(): LogResponse {
5470
return Object.create({
5571
nextRequestWaitMillis: 1000,

0 commit comments

Comments
 (0)