- Service Worker: Save on IndexDb and Sync to send after to the DB.

- Insert record on MongoDb, POST, GET.
This commit is contained in:
Paolo Arena
2019-02-01 04:10:31 +01:00
parent f52eb65284
commit 484439efe0
14 changed files with 494 additions and 100 deletions

91
src/js/utility.js Normal file
View File

@@ -0,0 +1,91 @@
console.log('utility.js')
var dbPromise = idb.open('mydb', 10, function (db) {
console.log('OPEN MYDB')
if (!db.objectStoreNames.contains('sync_todos')) {
db.createObjectStore('sync_todos', { keyPath: 'id' });
}
if (!db.objectStoreNames.contains('todos')) {
db.createObjectStore('todos', { keyPath: 'id' });
}
});
function writeData(st, data) {
console.log('writeData', st, data);
return dbPromise
.then(function (db) {
var tx = db.transaction(st, 'readwrite');
var store = tx.objectStore(st);
store.put(data);
return tx.complete;
});
}
function readAllData(st) {
console.log('readAllData', st);
return dbPromise
.then(function (db) {
var tx = db.transaction(st, 'readonly');
var store = tx.objectStore(st);
return store.getAll();
});
}
function clearAllData(st) {
console.log('clearAllData', st);
return dbPromise
.then(function (db) {
var tx = db.transaction(st, 'readwrite');
var store = tx.objectStore(st);
store.clear();
return tx.complete;
});
}
function deleteItemFromData(st, id) {
console.log('deleteItemFromData', st, 'ID:', id);
dbPromise
.then(function (db) {
var tx = db.transaction(st, 'readwrite');
var store = tx.objectStore(st);
try {
store.delete(id);
return tx.complete;
} catch (e) {
return false;
}
})
.then(function (res) {
if (res)
console.log('Item deleted!');
});
}
function urlBase64ToUint8Array(base64String) {
var padding = '='.repeat((4 - base64String.length % 4) % 4);
var base64 = (base64String + padding)
.replace(/\-/g, '+')
.replace(/_/g, '/');
var rawData = window.atob(base64);
var outputArray = new Uint8Array(rawData.length);
for (var i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
}
function dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var blob = new Blob([ab], { type: mimeString });
return blob;
}