From 3ed2d75336aa39bebaace2cf3955f45b36527e01 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Mon, 28 May 2018 16:44:45 +0300 Subject: [PATCH] fix(service-worker): fix `SwPush.unsubscribe()` (#24162) Fixes #24095 PR Close #24162 --- packages/service-worker/src/push.ts | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/service-worker/src/push.ts b/packages/service-worker/src/push.ts index c2d828fbf6..9ea4cef004 100644 --- a/packages/service-worker/src/push.ts +++ b/packages/service-worker/src/push.ts @@ -73,21 +73,22 @@ export class SwPush { if (!this.sw.isEnabled) { return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED)); } - const unsubscribe = this.subscription.pipe(switchMap((sub: PushSubscription | null) => { - if (sub !== null) { - return sub.unsubscribe().then(success => { - if (success) { - this.subscriptionChanges.next(null); - return undefined; - } else { - throw new Error('Unsubscribe failed!'); - } - }); - } else { + + const doUnsubscribe = (sub: PushSubscription | null) => { + if (sub === null) { throw new Error('Not subscribed to push notifications.'); } - })); - return unsubscribe.pipe(take(1)).toPromise(); + + return sub.unsubscribe().then(success => { + if (!success) { + throw new Error('Unsubscribe failed!'); + } + + this.subscriptionChanges.next(null); + }); + }; + + return this.subscription.pipe(take(1), switchMap(doUnsubscribe)).toPromise(); } private decodeBase64(input: string): string { return atob(input); }