mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-24 10:47:44 +00:00
50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
/* globals clients */
|
|
|
|
const fileCache = {}
|
|
|
|
self.addEventListener('install', (event) => {
|
|
console.log('Installing Uppy Service Worker...')
|
|
|
|
event.waitUntil(Promise.resolve()
|
|
.then(() => self.skipWaiting()))
|
|
})
|
|
|
|
self.addEventListener('activate', (event) => {
|
|
event.waitUntil(self.clients.claim())
|
|
})
|
|
|
|
function sendMessageToAllClients (msg) {
|
|
clients.matchAll().then((clients) => {
|
|
clients.forEach((client) => {
|
|
client.postMessage(msg)
|
|
})
|
|
})
|
|
}
|
|
|
|
function addFile (file) {
|
|
fileCache[file.id] = file
|
|
console.log('Added file to service worker cache:', file)
|
|
}
|
|
|
|
function removeFile (fileID) {
|
|
delete fileCache[fileID]
|
|
console.log('Removed file from service worker cache:', fileID)
|
|
}
|
|
|
|
function getFiles () {
|
|
sendMessageToAllClients({ type: 'ALL_FILES', files: fileCache })
|
|
}
|
|
|
|
self.addEventListener('message', (event) => {
|
|
switch (event.data.type) {
|
|
case 'ADD_FILE':
|
|
addFile(event.data.data)
|
|
break
|
|
case 'REMOVE_FILE':
|
|
removeFile(event.data.data)
|
|
break
|
|
case 'GET_FILES':
|
|
getFiles()
|
|
break
|
|
}
|
|
})
|