From 2754d567bf3ac229d8267cb12abfce9ed18eb0c3 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Wed, 23 Aug 2023 10:45:05 +0200 Subject: [PATCH] Added service worker --- angular.json | 10 +++-- ngsw-config.json | 30 +++++++++++++++ package.json | 1 + src/assets/icons/icon-128x128.png | Bin 0 -> 1124 bytes src/assets/icons/icon-144x144.png | Bin 0 -> 1291 bytes src/assets/icons/icon-152x152.png | Bin 0 -> 1306 bytes src/assets/icons/icon-192x192.png | Bin 0 -> 1654 bytes src/assets/icons/icon-384x384.png | Bin 0 -> 3557 bytes src/assets/icons/icon-512x512.png | Bin 0 -> 5008 bytes src/assets/icons/icon-72x72.png | Bin 0 -> 711 bytes src/assets/icons/icon-96x96.png | Bin 0 -> 857 bytes src/index.html | 5 ++- src/main.ts | 18 +++++---- src/manifest.webmanifest | 59 ++++++++++++++++++++++++++++++ 14 files changed, 111 insertions(+), 12 deletions(-) create mode 100644 ngsw-config.json create mode 100644 src/assets/icons/icon-128x128.png create mode 100644 src/assets/icons/icon-144x144.png create mode 100644 src/assets/icons/icon-152x152.png create mode 100644 src/assets/icons/icon-192x192.png create mode 100644 src/assets/icons/icon-384x384.png create mode 100644 src/assets/icons/icon-512x512.png create mode 100644 src/assets/icons/icon-72x72.png create mode 100644 src/assets/icons/icon-96x96.png create mode 100644 src/manifest.webmanifest diff --git a/angular.json b/angular.json index e18be14..b46e64d 100644 --- a/angular.json +++ b/angular.json @@ -35,7 +35,8 @@ "inlineStyleLanguage": "scss", "assets": [ "src/favicon.ico", - "src/assets" + "src/assets", + "src/manifest.webmanifest" ], "styles": [ "@angular/material/prebuilt-themes/deeppurple-amber.css", @@ -51,7 +52,9 @@ "base64-js", "js-sha256" ], - "localize": true + "localize": true, + "serviceWorker": true, + "ngswConfigPath": "ngsw-config.json" }, "configurations": { "production": { @@ -148,7 +151,8 @@ "inlineStyleLanguage": "scss", "assets": [ "src/favicon.ico", - "src/assets" + "src/assets", + "src/manifest.webmanifest" ], "styles": [ "@angular/material/prebuilt-themes/deeppurple-amber.css", diff --git a/ngsw-config.json b/ngsw-config.json new file mode 100644 index 0000000..f8bf210 --- /dev/null +++ b/ngsw-config.json @@ -0,0 +1,30 @@ +{ + "$schema": "./node_modules/@angular/service-worker/config/schema.json", + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/manifest.webmanifest", + "/*.css", + "/*.js" + ] + } + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": [ + "/assets/**", + "/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" + ] + } + } + ] +} diff --git a/package.json b/package.json index 3a97ed9..9823b43 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@angular/platform-browser": "^16.1.0", "@angular/platform-browser-dynamic": "^16.1.0", "@angular/router": "^16.1.0", + "@angular/service-worker": "^16.1.0", "@ngrx/effects": "^16.1.0", "@ngrx/store": "^16.1.0", "keycloak-angular": "^14.0.0", diff --git a/src/assets/icons/icon-128x128.png b/src/assets/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d215b878d32f43c6359eb9c741eff18035c8f686 GIT binary patch literal 1124 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 QN&o-=07*qoM6N<$f*EgD!T%hly^ zjOR&g&MsB%qO{>8PSs0n_}=9F=FcgL13pNDuxOON|Ald&qXVNxuC>aeo$5N@} zZwE)#rUk|arzBuSDaNs=VV_T=Qlv(nw@hkYTxN?sh@7rnDa zeu@0BcY!`QRkD4?x*46@_&J!&eWx>JO zaJDN41X(SB_-DI*z{XBGobB2HTRQ1*wl56W%t_}(I9qDKkNl;P8|zln^-i?_u(L%6 z{P;HHzC6{Mj;w+kinS_Q0Gi=juPaD}X-f$~xNFe>f}e^=B}S_U6B|N-N}5m7`t! zm+mKCAa}43v3O5V$;%vT3Iir(0Yx}E(ijGerIO@z)^QsDp!tCTnd1!p!JwQSGJuU( zz{ku20}gD&0zPILFu<@8n`_CAy{?WEu{bd^z<`{LSkxz|1rQ}-kzyu@W3&h0VevNF=m1}aS=me#&?V_**L%3E<((#V2TJ2(6VmQe{ z6I_NzY?=+w36I%ca0MJO-_HlM9*&t6oPi^Daq|Isfn$~lu7V@>_I%4k*!oGYVsmMXYnn0os8v6UGU9fVXD@S`Wo+ zCyWe=*x3adoS~RmVH8lrn&$%=C}t;N7$jn&dp@8Xk(gz|sE~+F^8vwx#Oxr99Eh0j z|23dRzND2<*8M*h)FB;<|C6To>j6(79J?lBu!$eQhoJYkv7|f3512fmp*zO^b8hs6 zfz1G4vc}_{$LtTY=9c3i3B*x`K*<^xgQ(USiHV4q z!a}Sw5{)fl{x|6a5iMeR%%F0X?oj;*pc0jc=`kCi5|jhbV>UyjvqWs6u*57vr8PwC zH`k<^#SpUqmC+Efl@ln2m~~K@_=p{u6X*>wYoXHczlRo5AZ`3j+CZkKBet^wS3YLY znc269Ewch?p^pGM7xwqil@};%%m(NLGGa&O1$s7S5jq_iv0@NN8yT|;bXsx~+bsfD zax)9i8M%mU*&>h@E@mg_G~6b(+5`$0vk?wZ5j(O?py$?t1`eE=h!vwi+NhYpgUGDH zyH(&y9RWNDM8vji6-Wyav%yDz*u+-5Kp|ol;lb%~#Exti=!wsa0UorE51`lu>M=gp zbw*!lN^9V1d_>4$b?3y&A>{>Ke?Viir&TtpQ+3nQ~wA-f{X*caUx(5iX zT_Rb{RJ+Y1aP2l~CfjY&%(mO08E$t;+e-s%Ji9f`4(ygSyRch2$a7*hui1^=oaXtT z{DYcbyOgz8reFUUQJcrQTRlB`lu}A5rIh+v4;-Vlb+zM+Qvd(}07*qoM6N<$g8py| Aj{pDw literal 0 HcmV?d00001 diff --git a/src/assets/icons/icon-384x384.png b/src/assets/icons/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..e54e8d3eafe56a617b9de13c361ed68657371e84 GIT binary patch literal 3557 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/icon-512x512.png b/src/assets/icons/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..51ee297df1cbeb0354814ffe95afa6e4bc86ea23 GIT binary patch literal 5008 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 FzW_h>y@eERCVNU ziq0`t`{wKQ$wrlmGw#4RlgYQvj=ErL*^^`$rn-?V~Du@_wTFpe19ljZH zjEmMvEjY?TK=6U4r)a`a5?9*=#c20CyRMTW(uNgNKx*`XtggYtsiAYiaI~WArPs-k5ZDN!jJJ9 zie^8`oD}umf$s6sZ}Fn6Nm1s-IL4yUi!u`=deOJWa7iG;t%4@eXC2{OeX*U002ovPDHLkV1g-oN=N_z literal 0 HcmV?d00001 diff --git a/src/assets/icons/icon-96x96.png b/src/assets/icons/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..7a71dbc2d9536f083934d5766978f647cd6bcdd6 GIT binary patch literal 857 zcmV-f1E&0mP)Fv!a zP~ap^-cfPsjicsrjrPpe@2I)+x5T&2Icop_01k9gPE!C^ql+2EBlXhj-LW!5{}}CY z00084NklnXc>u^CbVcBTI7o!Yo`1^*NH%{$PH%q?!5zx3siY2o{I_#H=16 zFnn@8D-n>%*{n=JCa1GXy4DCbPoDT$1@mkKU~)36q-&bi04mLAg$zwIAOV>?wG7uZ zt~5-sUobWg#{GhXAK-ywf;1|)TTI`4(-T2_=o=ACFTq3v@s%@nfQ1$dZYl~E%&TC= z0u`sWI5KhsF33q_D=@Z;+F6?O0vKBb1e!&*GLp_nY2*MTwiF5I9d(Yzrh%ZKk&Ppb z?G6MPjjU_wO)V54D)?Fwvu0+oDMU>o>#ga*5x5}7kxkYbGvU}SP>|vSj8DOcW2>M* z!^oU{3Q7lKyFx(%BOAU2W`MD!L;&yTOVF;1)6OIX{3TnTj_{W)Q4n;1eigu*nqfg1 zkIebUuLH3uOdh|ZgBJ|o2t<&^f5|#8Xjdoej0^k$X6prJj>eV~K@x}zFwzY8j)w;h`gzaQH#hh^HxC~el9wJKLW^rhA^*N%KyoIFt&;c zbm#z+l>+0|*g$8jv|;TjBp5=mrCbn-tP2U+P;8nCia=y@_*=zSAhtUdWP!-~u%Hjb zRw#;$Y>Ittaq^}rPAwuEV}e1(rZ~BXtcwX+ADirqmo|%uSAm#$@SSn=?*sI4LEo&g z$!8r8p<6(o)Y=8#8K)K@7T_m;jkZq5zO}0Hg1=;qvf^2(yZL;n0waK=} j*CyK@CM(p*$$!T`vkdLba!qC600000NkvXXu0mjfZlr_e literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html index a4ae104..1560e76 100644 --- a/src/index.html +++ b/src/index.html @@ -7,10 +7,13 @@ - + + + + diff --git a/src/main.ts b/src/main.ts index 50eac33..427a38e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,7 +2,7 @@ import {bootstrapApplication} from "@angular/platform-browser"; import {AppComponent} from "./app/app.component"; -import {APP_INITIALIZER} from "@angular/core"; +import {APP_INITIALIZER, isDevMode} from "@angular/core"; import {KeycloakBearerInterceptor, KeycloakService} from "keycloak-angular"; import {environment} from "./environments/environment"; import {provideRouter, withComponentInputBinding} from "@angular/router"; @@ -13,6 +13,7 @@ import {HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi} from "@ang import {ROOT_ROUTES} from "./app/app.routes"; import "@angular/localize/init"; import {Location} from "@angular/common"; +import {provideServiceWorker} from '@angular/service-worker'; function initializeKeycloak(keycloak: KeycloakService, locationService: Location) { return () => @@ -24,7 +25,7 @@ function initializeKeycloak(keycloak: KeycloakService, locationService: Location }, initOptions: { onLoad: 'check-sso', - silentCheckSsoRedirectUri:`${window.location.origin}${locationService.prepareExternalUrl('/assets/silent-check-sso.html')}`, + silentCheckSsoRedirectUri: `${window.location.origin}${locationService.prepareExternalUrl('/assets/silent-check-sso.html')}`, flow: "standard" }, shouldAddToken: (request) => { @@ -43,19 +44,20 @@ bootstrapApplication(AppComponent, { multi: true, deps: [KeycloakService, Location], }, - provideRouter(ROOT_ROUTES, - withComponentInputBinding()), + provideRouter(ROOT_ROUTES, withComponentInputBinding()), provideStore(), provideEffects(), provideAnimations(), - provideHttpClient( - withInterceptorsFromDi() - ), + provideHttpClient(withInterceptorsFromDi()), KeycloakService, { provide: HTTP_INTERCEPTORS, useClass: KeycloakBearerInterceptor, multi: true - } + }, + provideServiceWorker('ngsw-worker.js', { + enabled: !isDevMode(), + registrationStrategy: 'registerWhenStable:30000' + }) ] }).catch(err => console.error(err)); diff --git a/src/manifest.webmanifest b/src/manifest.webmanifest new file mode 100644 index 0000000..53a220a --- /dev/null +++ b/src/manifest.webmanifest @@ -0,0 +1,59 @@ +{ + "name": "wahlrecht-frontend", + "short_name": "wahlrecht-frontend", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "./", + "start_url": "./", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +}