uppy
Version:
Almost as cute as a Puppy :dog:
88 lines (69 loc) • 2.31 kB
JavaScript
;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _Promise = typeof Promise === 'undefined' ? require('es6-promise').Promise : Promise;
var isSupported = 'serviceWorker' in navigator;
var ServiceWorkerStore = function () {
function ServiceWorkerStore(core, opts) {
var _this = this;
_classCallCheck(this, ServiceWorkerStore);
this.core = core;
this.ready = new _Promise(function (resolve, reject) {
_this.core.on('core:file-sw-ready', function () {
resolve();
});
});
this.name = opts.storeName;
}
ServiceWorkerStore.prototype.list = function list() {
var _this2 = this;
var defer = {};
var promise = new _Promise(function (resolve, reject) {
defer.resolve = resolve;
defer.reject = reject;
});
console.log('Loading stored blobs from Service Worker');
var onMessage = function onMessage(event) {
if (event.data.store !== _this2.name) {
return;
}
switch (event.data.type) {
case 'uppy/ALL_FILES':
defer.resolve(event.data.files);
navigator.serviceWorker.removeEventListener('message', onMessage);
break;
}
};
this.ready.then(function () {
navigator.serviceWorker.addEventListener('message', onMessage);
navigator.serviceWorker.controller.postMessage({
type: 'uppy/GET_FILES',
store: _this2.name
});
});
return promise;
};
ServiceWorkerStore.prototype.put = function put(file) {
var _this3 = this;
return this.ready.then(function () {
navigator.serviceWorker.controller.postMessage({
type: 'uppy/ADD_FILE',
store: _this3.name,
file: file
});
});
};
ServiceWorkerStore.prototype.delete = function _delete(fileID) {
var _this4 = this;
return this.ready.then(function () {
navigator.serviceWorker.controller.postMessage({
type: 'uppy/REMOVE_FILE',
store: _this4.name,
fileID: fileID
});
});
};
return ServiceWorkerStore;
}();
ServiceWorkerStore.isSupported = isSupported;
module.exports = ServiceWorkerStore;
//# sourceMappingURL=ServiceWorkerStore.js.map