@@ -143,6 +143,7 @@ function loading() {
143143// SW
144144
145145const apiCacheName = 'api-cache-v1' ;
146+ const applicationServerKey = urlB64ToUint8Array ( 'BLKDIREFdJjk63LMAhjpwoBWPASDs1zQdKt5ovo-RFbiL839I4DoqM-pyk0WkBNKAGwyTfAc-QMBqsPjkWZWKMI' ) ;
146147
147148async function fromCache ( request , cacheName ) {
148149 const cache = await caches . open ( cacheName ) ;
@@ -163,14 +164,25 @@ async function messageHandler({ type, url }) {
163164 }
164165}
165166
167+ navigator . serviceWorker . addEventListener ( 'message' , event => messageHandler ( JSON . parse ( event . data ) ) ) ;
168+
169+ function urlB64ToUint8Array ( base64String ) {
170+ const padding = '=' . repeat ( ( 4 - base64String . length % 4 ) % 4 ) ;
171+ const base64 = ( base64String + padding ) . replace ( / \- / g, '+' ) . replace ( / _ / g, '/' ) ;
172+ const rawData = window . atob ( base64 ) ;
173+ const outputArray = new Uint8Array ( rawData . length ) ;
174+
175+ for ( let i = 0 ; i < rawData . length ; ++ i ) {
176+ outputArray [ i ] = rawData . charCodeAt ( i ) ;
177+ }
178+ return outputArray ;
166179}
167180
168- if ( 'serviceWorker' in window . navigator ) {
169- const registration = registerServiceWorker ( '/sw.js' ) ;
170- registration . then ( worker => {
171- navigator . serviceWorker . addEventListener ( 'message' , event => {
172- console . log ( event ) ;
173- messageHandler ( JSON . parse ( event . data ) ) ;
174- } ) ;
175- } ) ;
181+ async function getPushSubscription ( ) {
182+ const registration = await window . navigator . serviceWorker . ready ;
183+ let subscription = await registration . pushManager . getSubscription ( ) ;
184+ if ( ! subscription ) {
185+ subscription = await registration . pushManager . subscribe ( { userVisibleOnly : true , applicationServerKey } ) ;
186+ }
187+ console . dir ( JSON . stringify ( subscription ) ) ;
176188}
0 commit comments