feat: add support for the Web Share Target API (#1100)
Co-authored-by: userquin <userquin@gmail.com>
This commit is contained in:
parent
a6a825e553
commit
bede92404b
11 changed files with 221 additions and 7 deletions
24
composables/web-share-target.ts
Normal file
24
composables/web-share-target.ts
Normal file
|
@ -0,0 +1,24 @@
|
|||
export function useWebShareTarget(listener?: (message: MessageEvent) => void) {
|
||||
if (process.server)
|
||||
return
|
||||
|
||||
onBeforeMount(() => {
|
||||
// PWA must be installed to use share target
|
||||
if (useNuxtApp().$pwa.isInstalled && 'serviceWorker' in navigator) {
|
||||
if (listener)
|
||||
navigator.serviceWorker.addEventListener('message', listener)
|
||||
|
||||
navigator.serviceWorker.getRegistration()
|
||||
.then((registration) => {
|
||||
if (registration && registration.active) {
|
||||
// we need to signal the service worker that we are ready to receive data
|
||||
registration.active.postMessage({ action: 'ready-to-receive' })
|
||||
}
|
||||
})
|
||||
.catch(err => console.error('Could not get registration', err))
|
||||
|
||||
if (listener)
|
||||
onBeforeUnmount(() => navigator.serviceWorker.removeEventListener('message', listener))
|
||||
}
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue