- creating Alternative to SyncManager

- fix: refreshing with FF now it works!
This commit is contained in:
Paolo Arena
2019-02-08 17:10:25 +01:00
parent 5ee0d8e171
commit b65d0a2386
18 changed files with 340 additions and 195 deletions

View File

@@ -29,7 +29,7 @@
<q-toolbar-title>
{{$t('msg.myAppName')}}
<div slot="subtitle">{{$t('msg.myDescriz')}}</div>
<div slot="subtitle">{{$t('msg.myDescriz')}} {{ getAppVersion() }}</div>
</q-toolbar-title>
<q-select class="sel_lang" v-model="lang" stack-label="" :options="selectOpLang"/>
@@ -96,6 +96,10 @@
localStorage.setItem(rescodes.localStorage.leftDrawerOpen, value.toString())
}
getAppVersion() {
// return "AA"
return "[" + process.env.APP_VERSION + "]"
}
get lang() {
return this.$q.i18n.lang
}

View File

@@ -20,6 +20,7 @@ import VueIdb from 'vue-idb'
import globalroutines from '../../../globalroutines/index'
import $ from 'jquery'
import Api from "@api"
@Component({
@@ -76,8 +77,11 @@ export default class Todo extends Vue {
}
@Watch('todos_changed', { immediate: true })
@Watch('todos_changed', { immediate: true, deep: true })
changetodos_changed(value: string, oldValue: string) {
this.$q.notify('Changed...')
// console.log('Todos.state.todos_changed CHANGED!', value, oldValue)
this.updatetable(true)
}
@@ -86,9 +90,9 @@ export default class Todo extends Vue {
reload_fromServer_changed(value: string, oldValue: string) {
console.log('reload_fromServer_changed!', value, oldValue)
// if (value) {
Todos.actions.dbLoadTodo(false)
Todos.actions.dbLoadTodo(false)
Todos.actions.updateArrayInMemory()
Todos.actions.updateArrayInMemory()
// }
}
@@ -343,7 +347,7 @@ export default class Todo extends Vue {
checkUpdate_everytime() {
this.polling = setInterval(() => {
this.checkUpdate()
}, 10000)
}, 10000)
}
copy(o) {
@@ -470,8 +474,13 @@ export default class Todo extends Vue {
cmdSw = rescodes.DB.CMD_SYNC_TODOS
}
if (process.env.DEV) {
console.log('serviceWorker ', ('serviceWorker' in navigator) ? 'PRESENT!' : 'DOESN\'T EXIST!')
console.log('SyncManager ', ('SyncManager' in window) ? 'PRESENT!' : 'DOESN\'T EXIST!')
}
const mythis = this
if (('serviceWorker' in navigator && 'SyncManager' in window)) {
if ('serviceWorker' in navigator) {
await navigator.serviceWorker.ready
.then(function (sw) {
// _id: new Date().toISOString(),
@@ -482,18 +491,24 @@ export default class Todo extends Vue {
globalroutines(mythis, 'write', table, item, id)
.then(function (id) {
// console.log('id', id)
const sep = '|'
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
})
const sep = '|'
let multiparams = cmdSw + sep + table + sep + method + sep + UserStore.state.idToken + sep + UserStore.state.lang
let mymsgkey = {
_id: multiparams,
value: multiparams
}
globalroutines(mythis, 'write', 'swmsg', mymsgkey, multiparams)
.then(ris => {
if ('SyncManager' in window) {
console.log(' SENDING... sw.sync.register', multiparams)
return sw.sync.register(multiparams)
} else {
// #Todo ++ Alternative 2 to SyncManager
Api.syncAlternative(multiparams)
}
globalroutines(mythis, 'write', 'swmsg', mymsgkey, multiparams)
.then(ris => {
return sw.sync.register(multiparams)
})
})
.then(function () {
@@ -822,6 +837,7 @@ export default class Todo extends Vue {
objtodo.descr = 'PROVA'
objtodo.category = this.getCategory()
Todos.state.todos.push(objtodo)
Todos.mutations.setTodos_changed()
console.log('Todos.state.todos', Todos.state.todos)
}
@@ -831,7 +847,7 @@ export default class Todo extends Vue {
console.log('Todos.state.todos', Todos.state.todos)
}
checkUpdate () {
checkUpdate() {
Todos.actions.waitAndcheckPendingMsg()
}

View File

@@ -35,8 +35,8 @@
:after="[{icon: 'arrow_forward', content: true, handler () {}}]"
v-on:keyup.enter="insertTodo"/>
<!--<q-input v-model="testPao" float-label="testPao"/>-->
<!--<q-input v-model="todos_changed" float-label="todos_changed"/>-->
<q-input v-model="testPao" float-label="testPao"/>
<q-input v-model="todos_changed" float-label="todos_changed"/>
<q-input v-model="reload_fromServer" float-label="reload_fromServer"/>
<div class="flex-item btn-item">