Skip to content

Commit

Permalink
Create a logging service with flag`setDeliveryMetricsExportedToBigQue…
Browse files Browse the repository at this point in the history
…ryEnabled` to enable/disable (#5139)
  • Loading branch information
zwu52 committed Aug 17, 2021
1 parent f825b1d commit d0710d5
Show file tree
Hide file tree
Showing 27 changed files with 909 additions and 124 deletions.
6 changes: 6 additions & 0 deletions .changeset/bright-clouds-pretend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@firebase/messaging': minor
'firebase': minor
---

Allows retrieval of `messageId` from `MessagePayload`.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
},
"typescript.tsdk": "node_modules/typescript/lib",
"files.associations": { "*.json": "jsonc" }
}
}
137 changes: 69 additions & 68 deletions common/api-review/messaging-exp.api.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,69 @@
## API Report File for "@firebase/messaging-exp"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts

import { FirebaseApp } from '@firebase/app-exp';
import { NextFn } from '@firebase/util';
import { Observer } from '@firebase/util';
import { Unsubscribe } from '@firebase/util';

// @public
export function deleteToken(messaging: Messaging): Promise<boolean>;

// @public
export interface FcmOptions {
analyticsLabel?: string;
link?: string;
}

// @public
export function getMessaging(app?: FirebaseApp): Messaging;

// @public
export function getToken(messaging: Messaging, options?: GetTokenOptions): Promise<string>;

// @public
export interface GetTokenOptions {
serviceWorkerRegistration?: ServiceWorkerRegistration;
vapidKey?: string;
}

// @public
export function isSupported(): Promise<boolean>;

// @public
export interface MessagePayload {
collapseKey: string;
data?: {
[key: string]: string;
};
fcmOptions?: FcmOptions;
from: string;
notification?: NotificationPayload;
}

// @public
export interface Messaging {
}

export { NextFn }

// @public
export interface NotificationPayload {
body?: string;
image?: string;
title?: string;
}

export { Observer }

// @public
export function onMessage(messaging: Messaging, nextOrObserver: NextFn<MessagePayload> | Observer<MessagePayload>): Unsubscribe;

export { Unsubscribe }


```
## API Report File for "@firebase/messaging-exp"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts

import { FirebaseApp } from '@firebase/app-exp';
import { NextFn } from '@firebase/util';
import { Observer } from '@firebase/util';
import { Unsubscribe } from '@firebase/util';

// @public
export function deleteToken(messaging: Messaging): Promise<boolean>;

// @public
export interface FcmOptions {
analyticsLabel?: string;
link?: string;
}

// @public
export function getMessaging(app?: FirebaseApp): Messaging;

// @public
export function getToken(messaging: Messaging, options?: GetTokenOptions): Promise<string>;

// @public
export interface GetTokenOptions {
serviceWorkerRegistration?: ServiceWorkerRegistration;
vapidKey?: string;
}

// @public
export function isSupported(): Promise<boolean>;

// @public
export interface MessagePayload {
collapseKey: string;
data?: {
[key: string]: string;
};
fcmOptions?: FcmOptions;
from: string;
messageId: string;
notification?: NotificationPayload;
}

// @public
export interface Messaging {
}

export { NextFn }

// @public
export interface NotificationPayload {
body?: string;
image?: string;
title?: string;
}

export { Observer }

// @public
export function onMessage(messaging: Messaging, nextOrObserver: NextFn<MessagePayload> | Observer<MessagePayload>): Unsubscribe;

export { Unsubscribe }


```
24 changes: 22 additions & 2 deletions packages-exp/messaging-exp/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

import { FirebaseApp, _getProvider, getApp } from '@firebase/app-exp';
import {
Messaging,
GetTokenOptions,
MessagePayload
MessagePayload,
Messaging
} from './interfaces/public-types';
import {
NextFn,
Expand All @@ -33,6 +33,7 @@ import { deleteToken as _deleteToken } from './api/deleteToken';
import { getToken as _getToken } from './api/getToken';
import { onBackgroundMessage as _onBackgroundMessage } from './api/onBackgroundMessage';
import { onMessage as _onMessage } from './api/onMessage';
import { _setDeliveryMetricsExportedToBigQueryEnabled } from './api/setDeliveryMetricsExportedToBigQueryEnabled';

/**
* Retrieves a Firebase Cloud Messaging instance.
Expand Down Expand Up @@ -137,3 +138,22 @@ export function onBackgroundMessage(
messaging = getModularInstance(messaging);
return _onBackgroundMessage(messaging as MessagingService, nextOrObserver);
}

/**
* Enables or disables Firebase Cloud Messaging message delivery metrics export to BigQuery. By
* default, message delivery metrics are not exported to BigQuery. Use this method to enable or
* disable the export at runtime.
*
* @param messaging - The `FirebaseMessaging` instance.
* @param enable - Whether Firebase Cloud Messaging should export message delivery metrics to
* BigQuery.
*
* @public
*/
export function setDeliveryMetricsExportedToBigQueryEnabled(
messaging: Messaging,
enable: boolean
): void {
messaging = getModularInstance(messaging);
return _setDeliveryMetricsExportedToBigQueryEnabled(messaging, enable);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { Messaging } from '../interfaces/public-types';
import { MessagingService } from '../messaging-service';

export function _setDeliveryMetricsExportedToBigQueryEnabled(
messaging: Messaging,
enable: boolean
): void {
(messaging as MessagingService).deliveryMetricsExportedToBigQueryEnabled =
enable;
}
21 changes: 15 additions & 6 deletions packages-exp/messaging-exp/src/helpers/externalizePayload.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,16 @@ describe('externalizePayload', () => {
},
from: 'from',
// eslint-disable-next-line camelcase
collapse_key: 'collapse'
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
notification: { title: 'title', body: 'body', image: 'image' },
from: 'from',
collapseKey: 'collapse'
collapseKey: 'collapse',
messageId: 'mid'
};
expect(externalizePayload(internalPayload)).to.deep.equal(payload);
});
Expand All @@ -50,13 +53,16 @@ describe('externalizePayload', () => {
},
from: 'from',
// eslint-disable-next-line camelcase
collapse_key: 'collapse'
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
data: { foo: 'foo', bar: 'bar', baz: 'baz' },
from: 'from',
collapseKey: 'collapse'
collapseKey: 'collapse',
messageId: 'mid'
};
expect(externalizePayload(internalPayload)).to.deep.equal(payload);
});
Expand All @@ -80,7 +86,9 @@ describe('externalizePayload', () => {
},
from: 'from',
// eslint-disable-next-line camelcase
collapse_key: 'collapse'
collapse_key: 'collapse',
// eslint-disable-next-line camelcase
fcm_message_id: 'mid'
};

const payload: MessagePayload = {
Expand All @@ -99,7 +107,8 @@ describe('externalizePayload', () => {
analyticsLabel: 'label'
},
from: 'from',
collapseKey: 'collapse'
collapseKey: 'collapse',
messageId: 'mid'
};
expect(externalizePayload(internalPayload)).to.deep.equal(payload);
});
Expand Down
4 changes: 3 additions & 1 deletion packages-exp/messaging-exp/src/helpers/externalizePayload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ export function externalizePayload(
const payload: MessagePayload = {
from: internalPayload.from,
// eslint-disable-next-line camelcase
collapseKey: internalPayload.collapse_key
collapseKey: internalPayload.collapse_key,
// eslint-disable-next-line camelcase
messageId: internalPayload.fcm_message_id
} as MessagePayload;

propagateNotificationPayload(payload, internalPayload);
Expand Down

0 comments on commit d0710d5

Please sign in to comment.