1

I have installed the angular service worker module and applied the appropriate code to the app module. I have an updateComponent that has the UI to notify the user that there's a new version available with an update button that will reload the page.

However, in a previous version of the service worker, the code to make the notification UI appear and become removed on button click (reload), was the following:

export class LogUpdateService {

  updateAvailable: boolean = false;

  constructor(updates: SwUpdate) {
    updates.available.subscribe(event => {
      // console.log('current version is', event.current);
      // console.log('available version is', event.available);
      this.updateAvailable = true;
    });
    updates.activated.subscribe(event => {
      // console.log('old version was', event.previous);
      // console.log('new version is', event.current);
    });
  }
}

In the latest version, available has been depreciated.

I have added the following which achieves the UI component notification appearing. When the update button in the notification component is clicked, the page is reloaded (as intended). However, the notification component is still present and doesn't disappear. This component is governed by an ngIf with the updateAvailable boolean from the service below.

export class AppUpdateService {

  updateAvailable: boolean = false;

  constructor(
    private swUpdate: SwUpdate
  ) {

    swUpdate.checkForUpdate().then(() => {
      this.updateAvailable = true;
    });

  }
}

Question

Once the update button in the notification component has been clicked and the page has reloaded, why is updateAvailable still true? Is there another condition in the latest version of the service worker that checks if the update has been applied?

1 Answer 1

0

The following seemed to work:

    this.swUpdate.versionUpdates.subscribe((event: VersionEvent) => {
      if (event.type === 'VERSION_READY') {
        // do stuff
      }
    });
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.