- fix: updated from Store to Component: using Watch with 'immediate' parameters! @Watch('todos_changed', { immediate: true, deep: true })

- fix immediate only if you need to change something very quickly... otherwise it not need.
- fix: modified become FALSE when is sent, otherwise infinite loop...
- fix: created 2 separate tables for POST and PATCH request.
This commit is contained in:
Paolo Arena
2019-02-04 03:09:15 +01:00
parent 13a4a0ba90
commit b2e760faa9
11 changed files with 245 additions and 81 deletions

View File

@@ -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()
}
}