41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { AppModule } from '~/types'
|
|
import { registerSW } from 'virtual:pwa-register'
|
|
import logger from '~/logging'
|
|
import Vue from 'vue'
|
|
|
|
const { $pgettext } = Vue.prototype
|
|
|
|
export const install: AppModule = ({ store }) => {
|
|
const updateSW = registerSW({
|
|
onRegisterError () {
|
|
logger.default.error('SW install error')
|
|
},
|
|
onOfflineReady () {
|
|
logger.default.info('Funkwhale is being served from cache by a service worker.')
|
|
},
|
|
onRegistered () {
|
|
logger.default.info('Service worker has been registered.')
|
|
},
|
|
onNeedRefresh () {
|
|
store.commit('ui/addMessage', {
|
|
content: $pgettext('App/Message/Paragraph', 'A new version of the app is available.'),
|
|
date: new Date(),
|
|
key: 'refreshApp',
|
|
displayTime: 0,
|
|
classActions: 'bottom attached opaque',
|
|
actions: [
|
|
{
|
|
text: $pgettext('App/Message/Paragraph', 'Update'),
|
|
class: 'primary',
|
|
click: () => updateSW()
|
|
},
|
|
{
|
|
text: $pgettext('App/Message/Paragraph', 'Later'),
|
|
class: 'basic'
|
|
}
|
|
]
|
|
})
|
|
}
|
|
})
|
|
}
|