Files
binome/src/registerServiceWorker.ts

49 lines
1.4 KiB
TypeScript

/* eslint-disable no-console */
import { register } from 'register-service-worker'
import { setNotificationInstance, notify } from './utils/notification'
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
ready(sw) {
sw.getNotifications().then((notifs) => {
const newVersions = notifs.filter(
(notif) => notif.tag === 'new-version'
)
newVersions.forEach((notif) => notif.close())
})
console.log('App is being served from cache by a service worker')
setNotificationInstance((title, options?) =>
sw.showNotification(title, options)
)
},
registered() {
console.log('Service worker has been registered.')
},
cached() {
console.log('Content has been cached for offline use.')
},
updatefound() {
console.log('New content is downloading.')
},
updated(sw) {
console.log('New content is available; please refresh.')
setNotificationInstance((title, options?) =>
sw.showNotification(title, options)
)
notify('An update is available!', {
body: `Reload the app to install the update.`,
tag: 'new-version'
})
},
offline() {
console.log(
'No internet connection found. App is running in offline mode.'
)
},
error(error) {
console.error('Error during service worker registration:', error)
}
})
}