From c530c5d3176f7281780dce146c4b459043ac684b Mon Sep 17 00:00:00 2001 From: Ward Bell Date: Mon, 3 Apr 2017 11:48:46 -0600 Subject: [PATCH] fix(aio): when browser lacks service worker, disable sw feature --- aio/src/app/sw-updates/sw-updates.service.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/aio/src/app/sw-updates/sw-updates.service.ts b/aio/src/app/sw-updates/sw-updates.service.ts index 60a9ef1fcb..86a75037f3 100644 --- a/aio/src/app/sw-updates/sw-updates.service.ts +++ b/aio/src/app/sw-updates/sw-updates.service.ts @@ -1,4 +1,4 @@ -import { Injectable, OnDestroy } from '@angular/core'; +import { Injectable, Injector, OnDestroy } from '@angular/core'; import { NgServiceWorker } from '@angular/service-worker'; import { Observable } from 'rxjs/Observable'; import { ReplaySubject } from 'rxjs/ReplaySubject'; @@ -36,9 +36,13 @@ export class SwUpdatesService implements OnDestroy { private onDestroy = new Subject(); private checkForUpdateSubj = new Subject(); private isUpdateAvailableSubj = new ReplaySubject(1); + private sw: NgServiceWorker | NullServiceWorker = null; isUpdateAvailable = this.isUpdateAvailableSubj.distinctUntilChanged(); + isServiceWorkAvailable = !!navigator['serviceWorker']; + + constructor(injector: Injector) { + this.sw = this.isServiceWorkAvailable ? injector.get(NgServiceWorker) : new NullServiceWorker(); - constructor(private sw: NgServiceWorker) { this.checkForUpdateSubj .debounceTime(this.checkInterval) .takeUntil(this.onDestroy) @@ -74,3 +78,8 @@ export class SwUpdatesService implements OnDestroy { .subscribe(v => this.isUpdateAvailableSubj.next(v)); } } + +class NullServiceWorker { + checkForUpdate() { return Observable.of(false); } + activateUpdate(version: string) { return Observable.of(false); } +}