1 | import IS_BROWSER from '../helpers/is-browser'
|
2 |
|
3 | const defaults = {
|
4 | enabled: true,
|
5 | url: '/sw.js'
|
6 | }
|
7 |
|
8 | export 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 |
|
25 |
|
26 |
|
27 | }
|
28 | })
|
29 | })
|
30 | .catch(console.error)
|
31 | }
|
32 | }
|
33 | }
|
34 | }
|