Skip to content

Create a logging service with flagsetDeliveryMetricsExportedToBigQueryEnabled to enable/disable #5139

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Aug 17, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .changeset/bright-clouds-pretend.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
'@firebase/messaging': minor
'firebase': minor
---

Allows retrieval of `messageId` from `MessagePayload`.
6 changes: 0 additions & 6 deletions .changeset/quiet-moles-grab.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
Expand All @@ -55,7 +55,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
Expand Down Expand Up @@ -88,7 +88,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function externalizePayload(
// eslint-disable-next-line camelcase
collapseKey: internalPayload.collapse_key,
// eslint-disable-next-line camelcase
messageId: internalPayload.exposed_message_id
messageId: internalPayload.fcm_message_id
} as MessagePayload;

propagateNotificationPayload(payload, internalPayload);
Expand Down
27 changes: 25 additions & 2 deletions packages-exp/messaging-exp/src/helpers/logToFirelog.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,29 @@ describe('logToFirelog', () => {
expect(messaging.logEvents).to.be.empty;
});

it('Reject 1st request, Pass 2nd request', async () => {
it('Retries when non-200 response returned ', async () => {
// set up
fetchStub.resolves(
new Response(
/** body= */ new Blob(),
/** init= */ {
'status': 404,
'statusText': 'non-200 error returned'
}
)
);

messaging.logEvents.push(getFakeLogEvent());

// call
await LogModule._dispatchLogEvents(messaging);

//assert
expect(fetchStub).to.be.calledThrice;
expect(messaging.logEvents).to.be.empty;
});

it('Rejects 1st request, Passes 2nd request', async () => {
// set up
fetchStub
.onFirstCall()
Expand Down Expand Up @@ -154,8 +176,9 @@ describe('logToFirelog', () => {
}, 1000);
});

it('clears log events if no user logging permission', done => {
it('send log events if user logging permission is granted', done => {
// set up
fetchStub.resolves(new Response(JSON.stringify(getSuccessResponse())));
messaging = getFakeMessagingService();
messaging.logEvents.push(getFakeLogEvent());
messaging.deliveryMetricsExportedToBigQueryEnabled = true;
Expand Down
30 changes: 24 additions & 6 deletions packages-exp/messaging-exp/src/helpers/logToFirelog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ export function startLoggingService(messaging: MessagingService): void {
}
}

/**
*
* @param messaging the messaging instance.
* @param offsetInMs this method execute after `offsetInMs` elapsed .
*/
export function _processQueue(
messaging: MessagingService,
offsetInMs: number
Expand Down Expand Up @@ -98,10 +103,21 @@ export async function _dispatchLogEvents(
}
);

break;
if (response.ok) {
// existing the do-while interactive retry logic because a 200 response code has been
// returned.
break;
}

if (!response.ok) {
throw new Error(
'Non-200 code is returned in fetch to Firelog endpoint.'
);
}
} catch (error) {
const isLastAttempt = retryCount === MAX_RETRIES;
if (isLastAttempt) {
// existing the do-while interactive retry logic because retry quota has reached.
break;
}
}
Expand All @@ -116,7 +132,9 @@ export async function _dispatchLogEvents(
}

await new Promise(resolve => setTimeout(resolve, delayInMs));
} while (retryCount++ < MAX_RETRIES - 1);

retryCount++;
} while (retryCount < MAX_RETRIES);
}

messaging.logEvents = [];
Expand Down Expand Up @@ -148,8 +166,8 @@ function createFcmEvent(
fcmEvent.project_number = internalPayload.from;
}

if (!!internalPayload.exposed_message_id) {
fcmEvent.message_id = internalPayload.exposed_message_id;
if (!!internalPayload.fcm_message_id) {
fcmEvent.message_id = internalPayload.fcm_message_id;
}

fcmEvent.instance_id = fid;
Expand Down Expand Up @@ -184,7 +202,7 @@ function createAndEnqueueLogEvent(
const logEvent = {} as LogEvent;

/* eslint-disable camelcase */
logEvent.event_time_ms = Math.floor(Date.now() / 1000).toString();
logEvent.event_time_ms = Math.floor(Date.now()).toString();
logEvent.source_extension_json_proto3 = JSON.stringify(fcmEvent);
// eslint-disable-next-line camelcase

Expand All @@ -206,7 +224,7 @@ export function _mergeStrings(s1: string, s2: string): string {
const resultArray = [];
for (let i = 0; i < s1.length; i++) {
resultArray.push(s1.charAt(i));
if (s2.length > i) {
if (i < s2.length) {
resultArray.push(s2.charAt(i));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export interface MessagePayloadInternal {
// eslint-disable-next-line camelcase
collapse_key: string;
// eslint-disable-next-line camelcase
exposed_message_id: string;
fcm_message_id: string;
}

export interface NotificationPayloadInternal extends NotificationOptions {
Expand Down
10 changes: 5 additions & 5 deletions packages-exp/messaging-exp/src/interfaces/logging-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
// Describes a Firebase Messaging event on a client. Defined as in
// firebase_messaging/src/proto/messaging_event.proto
export interface FcmEvent {
project_number: string; //number
project_number: string;
message_id: string;
instance_id: string;
message_type: string; //number
sdk_platform: string; //number
message_type: string;
sdk_platform: string;
package_name: string;
collapse_key: string;
event: string; //number
event: string;
analytics_label?: string;
}

Expand Down Expand Up @@ -58,7 +58,7 @@ interface LogResponseDetails {
responseAction: UserResponse;
}

export enum UserResponse {
export const enum UserResponse {
RESPONSE_ACTION_UNKNOWN = 'RESPONSE_ACTION_UNKNOWN',
RETRY_REQUEST_LATER = 'RETRY_REQUEST_LATER',
DELETE_REQUEST = 'DELETE_REQUEST'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ const DISPLAY_MESSAGE: MessagePayloadInternal = {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

describe('SwController', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/messaging/src/controllers/sw-controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ const DISPLAY_MESSAGE: MessagePayloadInternal = {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

// internal message payload (parsed directly from the push event) that contains and only contains
Expand All @@ -82,7 +82,7 @@ const DATA_MESSAGE: MessagePayloadInternal = {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

describe('SwController', () => {
Expand Down
18 changes: 9 additions & 9 deletions packages/messaging/src/controllers/window-controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand All @@ -410,7 +410,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand All @@ -433,7 +433,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand Down Expand Up @@ -529,7 +529,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand All @@ -542,7 +542,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
});
expect(logEventSpy).not.to.have.been.called;
});
Expand All @@ -556,7 +556,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand All @@ -582,7 +582,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand All @@ -601,7 +601,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
});
expect(logEventSpy).to.have.been.calledOnceWith(
'notification_foreground',
Expand Down Expand Up @@ -631,7 +631,7 @@ describe('WindowController', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

await messageEventListener(
Expand Down
6 changes: 3 additions & 3 deletions packages/messaging/src/helpers/externalizePayload.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const expected: MessagePayload = {
Expand All @@ -55,7 +55,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const expected: MessagePayload = {
Expand Down Expand Up @@ -88,7 +88,7 @@ describe('externalizePayload', () => {
// eslint-disable-next-line camelcase
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
exposed_message_id: 'mid'
fcm_message_id: 'mid'
};

const expected: MessagePayload = {
Expand Down
2 changes: 1 addition & 1 deletion packages/messaging/src/helpers/externalizePayload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function externalizePayload(
// eslint-disable-next-line camelcase
collapseKey: internalPayload.collapse_key,
// eslint-disable-next-line camelcase
messageId: internalPayload.exposed_message_id
messageId: internalPayload.fcm_message_id
} as MessagePayload;

propagateNotificationPayload(payload, internalPayload);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export interface MessagePayloadInternal {
// eslint-disable-next-line camelcase
collapse_key: string;
// eslint-disable-next-line camelcase
exposed_message_id: string;
fcm_message_id: string;
}

export interface NotificationPayloadInternal extends NotificationOptions {
Expand Down