1- // (A) FILES TO CACHE
2- const cName = "iwashere" ,
3- cFiles = [
4- // (A1) BOOTSTRAP
5- "assets/bootstrap.bundle.min.js" ,
6- "assets/bootstrap.bundle.min.js.map" ,
7- "assets/bootstrap.min.css" ,
8- "assets/bootstrap.min.css.map" ,
9- // (A2) ICONS + IMAGES
10- "assets/ico-512.png" ,
11- "assets/favicon.png" ,
12- "assets/book.jpg" ,
13- // (A3) COMMON INTERFACE
14- "assets/PAGE-cb.js" ,
15- "assets/CB-selector.css" ,
16- "assets/CB-selector.js" ,
17- "assets/maticon.woff2" ,
18- "CB-manifest.json" ,
19- // (A4) HTML QR CODE + SCANNER
20- "assets/html5-qrcode.min.js" ,
21- "assets/qrcode.min.js" ,
22- // (A5) PAGES
23- "assets/PAGE-account.js" ,
24- "assets/PAGE-forgot.js" ,
25- "assets/PAGE-login.js" ,
26- "assets/A-class.js" ,
27- "assets/A-class-attend.js" ,
28- "assets/A-course.js" ,
29- "assets/A-course-import.js" ,
30- "assets/A-course-user.js" ,
31- "assets/A-course-user-import.js" ,
32- "assets/A-reports.js" ,
33- "assets/A-settings.js" ,
34- "assets/A-users.js" ,
35- "assets/A-users-import.js" ,
36- "assets/T-attend.js" ,
37- "assets/T-classes.js" ,
38- "assets/S-classes.js" ,
39- "assets/S-qr.js"
40- // @TODO - ADD MORE OF YOUR OWN TO CACHE
41- ] ;
1+ // (A) CREATE/INSTALL CACHE
2+ self . addEventListener ( "install" , evt => {
3+ self . skipWaiting ( ) ;
4+ evt . waitUntil (
5+ caches . open ( "IWasHere" )
6+ . then ( cache => cache . addAll ( [
7+ // (A1) BOOTSTRAP
8+ "assets/bootstrap.bundle.min.js" ,
9+ "assets/bootstrap.bundle.min.js.map" ,
10+ "assets/bootstrap.min.css" ,
11+ "assets/bootstrap.min.css.map" ,
12+ // (A2) ICONS + IMAGES
13+ "assets/ico-512.png" ,
14+ "assets/favicon.png" ,
15+ "assets/login.jpg" ,
16+ // (A3) COMMON INTERFACE
17+ "assets/PAGE-cb.js" ,
18+ "assets/CB-selector.css" ,
19+ "assets/CB-selector.js" ,
20+ "assets/maticon.woff2" ,
21+ "CB-manifest.json" ,
22+ // (A4) HTML QR CODE + SCANNER
23+ "assets/html5-qrcode.min.js" ,
24+ "assets/qrcode.min.js" ,
25+ // (A5) PAGES
26+ "assets/PAGE-account.js" ,
27+ "assets/PAGE-forgot.js" ,
28+ "assets/PAGE-login.js" ,
29+ "assets/A-class.js" ,
30+ "assets/A-class-attend.js" ,
31+ "assets/A-course.js" ,
32+ "assets/A-course-import.js" ,
33+ "assets/A-course-user.js" ,
34+ "assets/A-course-user-import.js" ,
35+ "assets/A-reports.js" ,
36+ "assets/A-settings.js" ,
37+ "assets/A-users.js" ,
38+ "assets/A-users-import.js" ,
39+ "assets/T-attend.js" ,
40+ "assets/T-classes.js" ,
41+ "assets/S-classes.js" ,
42+ "assets/S-qr.js"
43+ ] ) )
44+ . catch ( err => console . error ( err ) )
45+ ) ;
46+ } ) ;
4247
43- // (B) CREATE/INSTALL CACHE
44- self . addEventListener ( "install" , evt => evt . waitUntil (
45- caches . open ( cName )
46- . then ( cache => cache . addAll ( cFiles ) )
47- . catch ( err => console . error ( err ) )
48- ) ) ;
48+ // (B) CLAIM CONTROL INSTANTLY
49+ self . addEventListener ( "activate" , evt => self . clients . claim ( ) ) ;
4950
5051// (C) LOAD FROM CACHE FIRST, FALLBACK TO NETWORK IF NOT FOUND
5152self . addEventListener ( "fetch" , evt => evt . respondWith (
5253 caches . match ( evt . request ) . then ( res => res || fetch ( evt . request ) )
53- ) ) ;
54+ ) ) ;
55+
56+ // (D) LISTEN TO PUSH NOTIFICATIONS
57+ self . addEventListener ( "push" , evt => {
58+ const data = evt . data . json ( ) ;
59+ self . registration . showNotification ( data . title , {
60+ body : data . body ,
61+ icon : data . icon ,
62+ image : data . image
63+ } ) ;
64+ } ) ;
0 commit comments