File tree 1 file changed +52
-1
lines changed
1 file changed +52
-1
lines changed Original file line number Diff line number Diff line change 1
1
"use strict" ;
2
2
3
- var version = 2 ;
3
+ var version = 3 ;
4
4
var isOnline = true ;
5
5
var isLoggedIn = false ;
6
+ var cacheName = `ramblings-${ version } ` ;
7
+
8
+ var urlsToCache = {
9
+ loggedOut : [
10
+ "/" ,
11
+ "/about" ,
12
+ "/contact" ,
13
+ "/404" ,
14
+ "/login" ,
15
+ "/offline" ,
16
+ "/css/style.css" ,
17
+ "/js/blog.js" ,
18
+ "/js/home.js" ,
19
+ "/js/login.js" ,
20
+ "/js/add-post.js" ,
21
+ "/images/logo.gif" ,
22
+ "/images/offline.png"
23
+ ]
24
+ } ;
6
25
7
26
self . addEventListener ( "install" , onInstall ) ;
8
27
self . addEventListener ( "activate" , onActivate ) ;
@@ -15,6 +34,7 @@ main().catch(console.error);
15
34
16
35
async function main ( ) {
17
36
await sendMessage ( { statusUpdateRequest : true } ) ;
37
+ await cacheLoggedOutFiles ( ) ;
18
38
}
19
39
20
40
function onInstall ( evt ) {
@@ -27,10 +47,41 @@ function onActivate(evt) {
27
47
}
28
48
29
49
async function handleActivation ( ) {
50
+ await cacheLoggedOutFiles ( /*forceReload=*/ true ) ;
30
51
await clients . claim ( ) ;
31
52
console . log ( `Service Worker (v${ version } ) activated` ) ;
32
53
}
33
54
55
+ async function cacheLoggedOutFiles ( forceReload = false ) {
56
+ var cache = await caches . open ( cacheName ) ;
57
+
58
+ return Promise . all (
59
+ urlsToCache . loggedOut . map ( async function requestFile ( url ) {
60
+ try {
61
+ let res ;
62
+
63
+ if ( ! forceReload ) {
64
+ res = await cache . match ( url ) ;
65
+ if ( res ) {
66
+ return ;
67
+ }
68
+ }
69
+
70
+ let fetchOptions = {
71
+ method : "GET" ,
72
+ cache : "no-store" ,
73
+ credentials : "omit"
74
+ } ;
75
+ res = await fetch ( url , fetchOptions ) ;
76
+ if ( res . ok ) {
77
+ return cache . put ( url , res ) ;
78
+ }
79
+ }
80
+ catch ( err ) { }
81
+ } )
82
+ ) ;
83
+ }
84
+
34
85
async function sendMessage ( msg ) {
35
86
var allClients = await clients . matchAll ( { includeUncontrolled : true , } ) ;
36
87
return Promise . all (
You can’t perform that action at this time.
0 commit comments