diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js
index 05a14e0..dbac57d 100644
--- a/src-pwa/custom-service-worker.js
+++ b/src-pwa/custom-service-worker.js
@@ -105,14 +105,15 @@ if (workbox) {
function (args) {
return fetch(args.event.request, args.event.headers)
.then(function (res) {
- console.log('******* registerRoute fetch: (1) ', args.event)
+ // console.log('1° ******* registerRoute fetch: ', args.event)
+ // LOAD FROM SERVER , AND SAVE INTO INDEXEDDB
var clonedRes = res.clone();
clearAllData('todos')
.then(function () {
return clonedRes.json();
})
.then(function (data) {
- console.log('2) data Received ', data.todos)
+ console.log('Records TODOS Received from Server [', data.todos.length, 'record]', data.todos)
for (let key in data.todos) {
writeData('todos', data.todos[key])
}
@@ -234,53 +235,65 @@ if ('serviceWorker' in navigator) {
// })
self.addEventListener('sync', function (event) {
- console.log('[Service Worker V5] Background syncing', event);
+ console.log('[Service Worker V5] Background syncing', event.tag);
- let multiparams = event.tag.split('|')
- if (multiparams && multiparams.length > 3) {
- let cmd = multiparams[0]
- let table = multiparams[1]
- let method = multiparams[2]
- let token = multiparams[3]
- // let lang = multiparams[3]
+ let mystrparam = event.tag
+ let multiparams = mystrparam.split('|')
+ if (multiparams) {
+ if (multiparams.length > 3) {
+ let cmd = multiparams[0]
+ let table = multiparams[1]
+ let method = multiparams[2]
+ let token = multiparams[3]
+ // let lang = multiparams[3]
- if ((cmd === 'sync-new-todos') || (cmd === 'sync-delete-todos')) {
- console.log('[Service Worker] Syncing', cmd, table, method);
+ if (cmd === 'sync-todos') {
+ console.log('[Service Worker] Syncing', cmd, table, method);
- const headers = new Headers()
- headers.append('content-Type', 'application/json')
- headers.append('Accept', 'application/json')
- headers.append('x-auth', token)
+ const headers = new Headers()
+ headers.append('content-Type', 'application/json')
+ headers.append('Accept', 'application/json')
+ headers.append('x-auth', token)
- event.waitUntil(
- readAllData(table)
- .then(function (alldata) {
- if (alldata) {
- for (var rec of alldata) {
- //console.log('syncing', table, '', rec.descr)
- let link = cfgenv.serverweb + '/todos/' + rec._id
- console.log('syncing', table, 'FETCH: ', method, link, 'data:', rec.descr)
+ console.log('A1) INIZIO.............................................................');
- // Insert/Delete/Update table to the server
- fetch(link, {
- method: method,
- headers: headers,
- mode: 'cors', // 'no-cors',
- body: JSON.stringify(rec)
- })
- .then(function (resData) {
- console.log('Result CALL ', method, ' OK? =', resData.ok);
- if (resData.ok) {
- deleteItemFromData(table, rec._id);
- }
+ event.waitUntil(
+ readAllData(table)
+ .then(function (alldata) {
+ const myrecs = [...alldata]
+ console.log('----------------------- LEGGO QUALCOSA DAL WAITUNTIL ')
+ if (myrecs) {
+ for (let rec of myrecs) {
+ //console.log('syncing', table, '', rec.descr)
+ let link = cfgenv.serverweb + '/todos/' + rec._id
+ console.log('++++++++++++++++++ SYNCING !!!! ', rec.descr, table, 'FETCH: ', method, link, 'data:')
+
+ // Insert/Delete/Update table to the server
+ fetch(link, {
+ method: method,
+ headers: headers,
+ mode: 'cors', // 'no-cors',
+ body: JSON.stringify(rec)
})
- .catch(function (err) {
- console.log('!!!!!!!!!!!!!!! Error while sending data', err);
- });
+ .then(function (resData) {
+ console.log('Result CALL ', method, ' OK? =', resData.ok);
+ if (resData.ok) {
+ deleteItemFromData(table, rec._id);
+ }
+
+ console.log('DELETE: ', mystrparam)
+ deleteItemFromData('swmsg', mystrparam)
+
+ })
+ .catch(function (err) {
+ console.log('!!!!!!!!!!!!!!! Error while sending data', err);
+ });
+ }
}
- }
- })
- );
+ })
+ );
+ console.log('A2) ?????????????????????????? ESCO DAL LOOP !!!!!!!!! err=')
+ }
}
}
})
diff --git a/src-pwa/register-service-worker.js b/src-pwa/register-service-worker.js
index b331a7e..3fa63be 100644
--- a/src-pwa/register-service-worker.js
+++ b/src-pwa/register-service-worker.js
@@ -3,13 +3,13 @@
* when building for PRODUCTION
*/
-import {register} from 'register-service-worker'
+import { register } from 'register-service-worker'
register(process.env.SERVICE_WORKER_FILE, {
ready() {
console.log('READY::: App is being served from cache by a service worker.')
-
},
+
registered(registration) { // registration -> a ServiceWorkerRegistration instance
console.log('REGISTERED::: !!!', process.env.SERVICE_WORKER_FILE)
@@ -35,6 +35,4 @@ register(process.env.SERVICE_WORKER_FILE, {
// ServiceWorkerRegistration: https://developer.mozilla.org/en-uk/docs/Web/API/ServiceWorkerRegistration
-
-
// "build": "quasar build -m pwa && workbox generateSW workbox-config.js",
diff --git a/src/components/todos/todo/todo.ts b/src/components/todos/todo/todo.ts
index 7fed4b3..93ef05c 100644
--- a/src/components/todos/todo/todo.ts
+++ b/src/components/todos/todo/todo.ts
@@ -70,19 +70,35 @@ export default class Todo extends Vue {
return Todos.state.todos_changed
}
+ get reload_fromServer() {
+ return Todos.state.reload_fromServer
+ }
+
+
@Watch('todos_changed', { immediate: true })
changetodos_changed(value: string, oldValue: string) {
- console.log('Todos.state.todos_changed CHANGED!', value, oldValue)
+ // console.log('Todos.state.todos_changed CHANGED!', value, oldValue)
this.updatetable(true)
}
+ @Watch('reload_fromServer', { immediate: true })
+ reload_fromServer_changed(value: string, oldValue: string) {
+ console.log('reload_fromServer_changed!', value, oldValue)
+ if (value) {
+ Todos.actions.dbLoadTodo(false)
+
+ Todos.actions.updateArrayInMemory()
+ }
+ }
+
+
get testPao() {
return Todos.state.testpao
}
@Watch('testPao', { immediate: true, deep: true })
changedTestpao(value: string, oldValue: string) {
- console.log('testpao CHANGED', value, oldValue)
+ // console.log('testpao CHANGED', value, oldValue)
this.updatetable(true)
}
@@ -372,7 +388,7 @@ export default class Todo extends Vue {
const objtodo = this.initcat()
- console.log('autologin userId STATE ', UserStore.state.userId)
+ console.log('insertTodo ', UserStore.state.userId)
objtodo.descr = this.todo
objtodo.category = this.getCategory()
@@ -424,6 +440,11 @@ export default class Todo extends Vue {
console.log('cmdToSyncAndDb', cmd, table, method, item.descr, id, msg)
+ let cmdSw = cmd
+ if ((cmd === rescodes.DB.CMD_SYNC_NEW_TODOS) || (cmd === rescodes.DB.CMD_DELETE_TODOS)) {
+ cmdSw = rescodes.DB.CMD_SYNC_TODOS
+ }
+
const mythis = this
if (('serviceWorker' in navigator && 'SyncManager' in window)) {
await navigator.serviceWorker.ready
@@ -438,11 +459,18 @@ export default class Todo extends Vue {
// console.log('id', id)
const sep = '|'
- let multiparams = cmd + sep + table + sep + method + sep + UserStore.state.idToken + sep + UserStore.state.lang
- return sw.sync.register(multiparams)
+ let multiparams = cmdSw + sep + table + sep + method + sep + UserStore.state.idToken + sep + UserStore.state.lang
+ console.log(' SENDING... sw.sync.register', multiparams)
+ let mymsgkey = {
+ _id: multiparams,
+ value: multiparams
+ }
+ globalroutines(mythis, 'write', 'swmsg', mymsgkey, multiparams)
+ .then(ris => {
+ return sw.sync.register(multiparams)
+ })
})
.then(function () {
- console.log('USCITO dalla sw.sync.register(multiparams) ')
let snackbarContainer = document.querySelector('#confirmation-toast')
let data = { message: msg }
@@ -462,7 +490,7 @@ export default class Todo extends Vue {
}
} else {
- if (cmd === rescodes.DB.CMD_SYNC_TODOS) {
+ if (cmd === rescodes.DB.CMD_SYNC_NEW_TODOS) {
if (method === 'POST')
Todos.actions.dbInsertTodo(item)
else if (method === 'PATCH')
@@ -473,7 +501,7 @@ export default class Todo extends Vue {
}
async saveItemToSyncAndDb(table: String, method, item: ITodo, update: boolean) {
- return await this.cmdToSyncAndDb(rescodes.DB.CMD_SYNC_TODOS, table, method, item, 0, 'Your Post was saved for syncing!', update)
+ return await this.cmdToSyncAndDb(rescodes.DB.CMD_SYNC_NEW_TODOS, table, method, item, 0, 'Your Post was saved for syncing!', update)
}
@@ -558,7 +586,7 @@ export default class Todo extends Vue {
}
async updatetable(refresh: boolean = false) {
- console.log('updatetable')
+ // console.log('updatetable')
this.prevRecords = [...this.todos_arr]
@@ -749,7 +777,7 @@ export default class Todo extends Vue {
globalroutines(this, 'write', 'todos', miorec)
.then(ris => {
- this.saveItemToSyncAndDb(rescodes.DB.TABLE_SYNC_TODOS, 'PATCH', miorec, update)
+ this.saveItemToSyncAndDb(rescodes.DB.TABLE_SYNC_TODOS_PATCH, 'PATCH', miorec, update)
.then(() => {
// console.log('SET MODIFIED FALSE')
@@ -778,4 +806,8 @@ export default class Todo extends Vue {
console.log('Todos.state.todos', Todos.state.todos)
}
+ checkUpdate () {
+ Todos.actions.waitAndcheckPendingMsg()
+ }
+
}
diff --git a/src/components/todos/todo/todo.vue b/src/components/todos/todo/todo.vue
index 2320df1..86b3e5c 100644
--- a/src/components/todos/todo/todo.vue
+++ b/src/components/todos/todo/todo.vue
@@ -37,13 +37,12 @@