UNPKG

1.04 kBJavaScriptView Raw
1import IS_BROWSER from '../helpers/is-browser'
2
3const defaults = {
4 enabled: true,
5 url: '/sw.js'
6}
7
8export default spec => {
9 const opts = Object.assign({}, defaults, spec)
10 return {
11 name: 'sw-manager',
12 init: (store) => {
13 if (IS_BROWSER && 'serviceWorker' in window.navigator && opts.enabled) {
14 navigator.serviceWorker.register(opts.url)
15 .then(registration => {
16 const currentController = navigator.serviceWorker.controller
17
18 navigator.serviceWorker.addEventListener('controllerchange', () => {
19 console.log('page controller changed')
20 if (currentController) {
21 console.log('existing SW was replaced with another one')
22 } else {
23 console.log('did not have active SW, but now does')
24 // if (!hasNotifiedUserAboutOffline) {
25 // notifyUserTheAppWillWorkOffline()
26 // }
27 }
28 })
29 })
30 .catch(console.error)
31 }
32 }
33 }
34}