From 7d98cc2c496e84f504a8352f171ea8da8406d280 Mon Sep 17 00:00:00 2001 From: Jan Szumotalski Date: Tue, 20 May 2025 20:58:52 +0200 Subject: [PATCH] fix: Added serviceWorker env and fixed #19 --- angular.json | 24 ++++++++++++++++++++++++ ngsw-config.json | 14 +++++++------- src/app/app.module.ts | 3 ++- src/app/services/app-update.service.ts | 16 +++++++++++++++- src/environments/environment.swdev.ts | 5 +++++ 5 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 src/environments/environment.swdev.ts diff --git a/angular.json b/angular.json index 2ceac64..718930c 100644 --- a/angular.json +++ b/angular.json @@ -70,6 +70,30 @@ "with": "src/environments/environment.development.ts" } ] + }, + "swDevelopment": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true, + "outputHashing": "all", + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.swdev.ts" + } + ], + "assets": [ + { + "glob": "ngsw-worker.js", + "input": "node_modules/@angular/servce-worker", + "output": "." + }, + "src/ngsw.json", + "src/manifest.webmanifest" + ] } }, "defaultConfiguration": "production" diff --git a/ngsw-config.json b/ngsw-config.json index 07fb61d..f25973d 100644 --- a/ngsw-config.json +++ b/ngsw-config.json @@ -1,16 +1,16 @@ { "$schema": "./node_modules/@angular/service-worker/config/schema.json", - "index": "./index.html", + "index": "/ipwa/index.html", "assetGroups": [ { "name": "app", "installMode": "prefetch", "resources": { "files": [ - "/favicon.ico", - "/manifest.webmanifest", - "/*.css", - "/*.js" + "/ipwa/favicon.ico", + "/ipwa/manifest.webmanifest", + "/ipwa/*.css", + "/ipwa/*.js" ] } }, @@ -20,8 +20,8 @@ "updateMode": "prefetch", "resources": { "files": [ - "./assets/**", - "/**/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" + "/ipwa/assets/**", + "/ipwa/**/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" ] } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 6bb5523..9cd3082 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -78,6 +78,7 @@ import { AttendenceComponent } from './admin-view/grades/attendence/attendence.c import { AttendenceSummaryComponent } from './admin-view/grades/attendence-summary/attendence-summary.component'; import { HourDisplayComponent } from './admin-view/grades/attendence-summary/hour-display/hour-display.component'; import { AboutComponent } from './app-view/personal/about/about.component'; +import { environment } from 'src/environments/environment'; @NgModule({ declarations: [ @@ -160,7 +161,7 @@ import { AboutComponent } from './app-view/personal/about/about.component'; A11yModule, MatAutocompleteModule, ServiceWorkerModule.register('ngsw-worker.js', { - enabled: !isDevMode(), + enabled: environment.production, // Register the ServiceWorker as soon as the application is stable // or after 30 seconds (whichever comes first). registrationStrategy: 'registerWhenStable:30000' diff --git a/src/app/services/app-update.service.ts b/src/app/services/app-update.service.ts index 07d4763..7384f00 100644 --- a/src/app/services/app-update.service.ts +++ b/src/app/services/app-update.service.ts @@ -8,7 +8,21 @@ import { catchError, concat, first, from, interval, tap, throwError } from 'rxjs }) export class AppUpdateService implements OnInit { - constructor(readonly appRef: ApplicationRef, readonly update: SwUpdate, readonly sb: MatSnackBar) { } + constructor(readonly appRef: ApplicationRef, readonly update: SwUpdate, readonly sb: MatSnackBar) { + this.update.versionUpdates.subscribe((evt) => { + switch (evt.type) { + case 'VERSION_DETECTED': + console.log(`Downloading ${evt.version.hash}`); + break; + case 'VERSION_READY': + console.log(`Current: ${evt.currentVersion.hash}, new: ${evt.latestVersion.hash}`); + break; + case 'VERSION_INSTALLATION_FAILED': + console.error(`Failed to install ${evt.version.hash}: ${evt.error}`); + break; + } + }) + } ngOnInit(): void { const appIsStable = this.appRef.isStable.pipe(first(isStable => isStable === true)) diff --git a/src/environments/environment.swdev.ts b/src/environments/environment.swdev.ts new file mode 100644 index 0000000..35fd6cc --- /dev/null +++ b/src/environments/environment.swdev.ts @@ -0,0 +1,5 @@ +export const environment = { + apiEndpoint: `http://localhost:12230`, + version: "testing (swDev)", + production: true +};