Skip to content

Commit

Permalink
feat(register): add on begin update hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
Doctor-wu committed Dec 14, 2023
1 parent 4d3b1d0 commit 59ccbb3
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/client/build/preact.ts
Expand Up @@ -8,6 +8,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
const {
immediate = true,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand All @@ -24,6 +25,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
setOfflineReady(true)
onOfflineReady?.()
},
onBeginUpdate,
onNeedRefresh() {
setNeedRefresh(true)
onNeedRefresh?.()
Expand Down
2 changes: 2 additions & 0 deletions src/client/build/react.ts
Expand Up @@ -8,6 +8,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
const {
immediate = true,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand All @@ -24,6 +25,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
setOfflineReady(true)
onOfflineReady?.()
},
onBeginUpdate,
onNeedRefresh() {
setNeedRefresh(true)
onNeedRefresh?.()
Expand Down
6 changes: 6 additions & 0 deletions src/client/build/register.ts
Expand Up @@ -18,6 +18,7 @@ export function registerSW(options: RegisterSWOptions = {}) {
const {
immediate = false,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand Down Expand Up @@ -81,6 +82,11 @@ export function registerSW(options: RegisterSWOptions = {}) {

onNeedRefresh?.()
}
// Add an event listener to detect when the new service worker
// start to be installed but not yet installed.
wb.addEventListener('installing', (event) => {
event.isUpdate && onBeginUpdate?.()
})
wb.addEventListener('installed', (event) => {
if (typeof event.isUpdate === 'undefined') {
if (typeof event.isExternal !== 'undefined') {
Expand Down
2 changes: 2 additions & 0 deletions src/client/build/solid.ts
Expand Up @@ -8,6 +8,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
const {
immediate = true,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand All @@ -19,6 +20,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {

const updateServiceWorker = registerSW({
immediate,
onBeginUpdate,
onOfflineReady() {
setOfflineReady(true)
onOfflineReady?.()
Expand Down
2 changes: 2 additions & 0 deletions src/client/build/svelte.ts
Expand Up @@ -8,6 +8,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
const {
immediate = true,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand All @@ -19,6 +20,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {

const updateServiceWorker = registerSW({
immediate,
onBeginUpdate,
onOfflineReady() {
offlineReady.set(true)
onOfflineReady?.()
Expand Down
2 changes: 2 additions & 0 deletions src/client/build/vue.ts
Expand Up @@ -8,6 +8,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {
const {
immediate = true,
onNeedRefresh,
onBeginUpdate,
onOfflineReady,
onRegistered,
onRegisteredSW,
Expand All @@ -19,6 +20,7 @@ export function useRegisterSW(options: RegisterSWOptions = {}) {

const updateServiceWorker = registerSW({
immediate,
onBeginUpdate,
onNeedRefresh() {
needRefresh.value = true
onNeedRefresh?.()
Expand Down
1 change: 1 addition & 0 deletions src/client/type.d.ts
@@ -1,6 +1,7 @@
export interface RegisterSWOptions {
immediate?: boolean
onNeedRefresh?: () => void
onBeginUpdate?: () => void
onOfflineReady?: () => void
/**
* Called only if `onRegisteredSW` is not provided.
Expand Down

0 comments on commit 59ccbb3

Please sign in to comment.