diff --git a/packages/service-worker/src/low_level.ts b/packages/service-worker/src/low_level.ts index 8d07ee52fc..f63aa3bcba 100644 --- a/packages/service-worker/src/low_level.ts +++ b/packages/service-worker/src/low_level.ts @@ -52,6 +52,10 @@ interface StatusEvent { error?: string; } +export interface NotificationObject extends NotificationOptions { + title: string; +} + function errorObservable(message: string): Observable { return defer(() => throwError(new Error(message))); diff --git a/packages/service-worker/src/push.ts b/packages/service-worker/src/push.ts index 942a96129e..7466aca8fe 100644 --- a/packages/service-worker/src/push.ts +++ b/packages/service-worker/src/push.ts @@ -10,7 +10,7 @@ import {Injectable} from '@angular/core'; import {NEVER, Observable, Subject, merge} from 'rxjs'; import {map, switchMap, take} from 'rxjs/operators'; -import {ERR_SW_NOT_SUPPORTED, NgswCommChannel, PushEvent} from './low_level'; +import {ERR_SW_NOT_SUPPORTED, NgswCommChannel, NotificationObject, PushEvent} from './low_level'; /** @@ -25,7 +25,21 @@ export class SwPush { */ readonly messages: Observable; - readonly messagesClicked: Observable; + /** + * Emits the payloads of the received push notification messages as well as the action the user + * interacted with. + * If no action was used the action property will be an empty string `''`. + * + * Note that the `notification` property is __not__ a + * [Notification](https://developer.mozilla.org/en-US/docs/Web/API/Notification) but rather a + * [NotificationOptions](https://notifications.spec.whatwg.org/#dictdef-notificationoptions) + * object that also includes the notification `title`. + */ + readonly messagesClicked: Observable < { + action: string; + notification: NotificationObject + } + > ; /** * Emits the currently active