Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
whats-open-web
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Nicholas J Anderson
whats-open-web
Commits
166fa885
Commit
166fa885
authored
Feb 11, 2018
by
Mattias J Duffy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updating service worker to the newest one depoyed with react scripts
parent
81b311ca
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
69 deletions
+76
-69
src/registerServiceWorker.js
src/registerServiceWorker.js
+76
-69
No files found.
src/registerServiceWorker.js
View file @
166fa885
// In production, we register a service worker to serve assets from local cache.
// In production, we register a service worker to serve assets from local cache.
// This lets the app load faster on subsequent visits in production, and gives
// This lets the app load faster on subsequent visits in production, and gives
// it offline capabilities. However, it also means that developers (and users)
// it offline capabilities. However, it also means that developers (and users)
// will only see deployed updates on the "N+1" visit to a page, since previously
// will only see deployed updates on the "N+1" visit to a page, since previously
// cached resources are updated in the background.
// cached resources are updated in the background. To learn more about the
// benefits of this model, read https://goo.gl/KwvDNy. This link also includes
// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
// instructions on opting out of this behavior.
// This link also includes instructions on opting out of this behavior.
const
isLocalhost
=
Boolean
(
const
isLocalhost
=
Boolean
(
window
.
location
.
hostname
===
'
localhost
'
||
window
.
location
.
hostname
===
'
localhost
'
||
// [::1] is the IPv6 localhost address.
// [::1] is the IPv6 localhost address.
window
.
location
.
hostname
===
'
[::1]
'
||
window
.
location
.
hostname
===
'
[::1]
'
||
// 127.0.0.1/8 is considered localhost for IPv4.
// 127.0.0.1/8 is considered localhost for IPv4.
window
.
location
.
hostname
.
match
(
/^127
(?:\.(?:
25
[
0-5
]
|2
[
0-4
][
0-9
]
|
[
01
]?[
0-9
][
0-9
]?)){3}
$/
));
window
.
location
.
hostname
.
match
(
/^127
(?:\.(?:
25
[
0-5
]
|2
[
0-4
][
0-9
]
|
[
01
]?[
0-9
][
0-9
]?)){3}
$/
)
);
export
default
function
register
()
{
export
default
function
register
()
{
if
(
process
.
env
.
NODE_ENV
===
'
production
'
&&
'
serviceWorker
'
in
navigator
)
{
if
(
process
.
env
.
NODE_ENV
===
'
production
'
&&
'
serviceWorker
'
in
navigator
)
{
// The URL constructor is available in all browsers that support SW.
// The URL constructor is available in all browsers that support SW.
const
publicUrl
=
new
URL
(
process
.
env
.
PUBLIC_URL
,
window
.
location
);
const
publicUrl
=
new
URL
(
process
.
env
.
PUBLIC_URL
,
window
.
location
);
if
(
publicUrl
.
origin
!==
window
.
location
.
origin
)
{
if
(
publicUrl
.
origin
!==
window
.
location
.
origin
)
{
// Our service worker won't work if PUBLIC_URL is on a different origin
// Our service worker won't work if PUBLIC_URL is on a different origin from
// from what our page is served on. This might happen if a CDN is used to
// what our page is served on. This might happen if a CDN is used to serve
// serve
assets; see https://github.com/facebookincubator/create-react-app/issues/2374
//
assets; see https://github.com/facebookincubator/create-react-app/issues/2374
return
;
return
;
}
}
window
.
addEventListener
(
'
load
'
,
()
=>
{
window
.
addEventListener
(
'
load
'
,
()
=>
{
const
swUrl
=
`
${
process
.
env
.
PUBLIC_URL
}
/service-worker.js`
;
const
swUrl
=
`
${
process
.
env
.
PUBLIC_URL
}
/service-worker.js`
;
if
(
!
isLocalhost
)
{
if
(
isLocalhost
)
{
// Is not local host. Just register service worker
// This is running on localhost. Lets check if a service worker still exists or
registerValidSW
(
swUrl
);
// not.
}
else
{
// This is running on localhost. Lets check if a service worker still exists or not.
checkValidServiceWorker
(
swUrl
);
checkValidServiceWorker
(
swUrl
);
// Add some additional logging to localhost, pointing developers to the service
// worker/PWA documentation.
navigator
.
serviceWorker
.
ready
.
then
(()
=>
{
console
.
log
(
'
This web app is being served cache-first by a service worker. To learn more, vis
'
+
'
it https://goo.gl/SC7cgQ
'
);
});
}
else
{
// Is not local host. Just register service worker
registerValidSW
(
swUrl
);
}
}
});
});
}
}
}
}
function
registerValidSW
(
swUrl
)
{
function
registerValidSW
(
swUrl
)
{
navigator
.
serviceWorker
navigator
.
register
(
swUrl
)
.
serviceWorker
.
then
((
registration
)
=>
{
.
register
(
swUrl
)
registration
.
onupdatefound
=
(
)
=>
{
.
then
((
registration
)
=>
{
const
installingWorker
=
registration
.
installing
;
registration
.
onupdatefound
=
()
=>
{
installingWorker
.
onstatechange
=
()
=>
{
const
installingWorker
=
registration
.
installing
;
i
f
(
installingWorker
.
state
===
'
installed
'
)
{
i
nstallingWorker
.
onstatechange
=
()
=>
{
if
(
navigator
.
serviceWorker
.
controller
)
{
if
(
installingWorker
.
state
===
'
installed
'
)
{
// At this point, the old content will have been purged and
if
(
navigator
.
serviceWorker
.
controller
)
{
// the fresh content will have been added to the cache.
// At this point, the old content will have been purged and the fresh content
// It's the perfect time to display a "New content is
// will have been added to the cache. It's the perfect time to display a "New
//
available; please refresh." message in your web app.
// content is
available; please refresh." message in your web app.
console
.
log
(
'
New content is available; please refresh.
'
);
console
.
log
(
'
New content is available; please refresh.
'
);
}
else
{
}
else
{
// At this point, everything has been precached.
// At this point, everything has been precached. It's the perfect time to
// It's the perfect time to display a
// display a "Content is cached for offline use." message.
// "Content is cached for offline use." message.
console
.
log
(
'
Content is cached for offline use.
'
);
console
.
log
(
'
Content is cached for offline use.
'
);
}
}
}
}
}
;
};
};
};
})
})
.
catch
((
error
)
=>
{
.
catch
((
error
)
=>
{
console
.
error
(
'
Error during service worker registration:
'
,
error
);
console
.
error
(
'
Error during service worker registration:
'
,
error
);
});
});
}
}
function
checkValidServiceWorker
(
swUrl
)
{
function
checkValidServiceWorker
(
swUrl
)
{
// Check if the service worker can be found. If it can't reload the page.
// Check if the service worker can be found. If it can't reload the page.
fetch
(
swUrl
)
fetch
(
swUrl
).
then
((
response
)
=>
{
.
then
((
response
)
=>
{
// Ensure service worker exists, and that we really are getting a JS file.
// Ensure service worker exists, and that we really are getting a JS file.
if
(
response
.
status
===
404
||
response
.
headers
.
get
(
'
content-type
'
).
indexOf
(
'
javascript
'
)
===
-
1
)
{
if
(
// No service worker found. Probably a different app. Reload the page.
response
.
status
===
404
||
navigator
response
.
headers
.
get
(
'
content-type
'
).
indexOf
(
'
javascript
'
)
===
-
1
.
serviceWorker
)
{
.
ready
// No service worker found. Probably a different app. Reload the page.
.
then
((
registration
)
=>
{
navigator
.
serviceWorker
.
ready
.
then
((
registration
)
=>
{
registration
registration
.
unregister
().
then
(()
=>
{
.
unregister
()
window
.
location
.
reload
();
.
then
(()
=>
{
window
.
location
.
reload
();
});
});
});
});
}
else
{
}
else
{
// Service worker found. Proceed as normal.
// Service worker found. Proceed as normal.
registerValidSW
(
swUrl
);
registerValidSW
(
swUrl
);
}
}
})
}).
catch
(()
=>
{
.
catch
(()
=>
{
console
.
log
(
'
No internet connection found. App is running in offline mode.
'
);
console
.
log
(
'
No internet connection found. App is running in offline mode.
'
);
});
});
}
}
export
function
unregister
()
{
export
function
unregister
()
{
if
(
'
serviceWorker
'
in
navigator
)
{
if
(
'
serviceWorker
'
in
navigator
)
{
navigator
.
serviceWorker
.
ready
.
then
((
registration
)
=>
{
navigator
registration
.
unregister
();
.
serviceWorker
});
.
ready
.
then
((
registration
)
=>
{
registration
.
unregister
();
});
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment