feat: add support for the Web Share Target API (#1100)

Co-authored-by: userquin <userquin@gmail.com>
This commit is contained in:
Horváth Bálint 2023-01-14 21:58:52 +01:00 committed by GitHub
parent a6a825e553
commit bede92404b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 221 additions and 7 deletions

View 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))
}
})
}