forked from platypush/platypush
[#260] A simple entities caching mechanism using the browser storage.
This commit is contained in:
parent
74ab884b7a
commit
78c12212c6
1 changed files with 33 additions and 5 deletions
|
@ -252,8 +252,9 @@ export default {
|
||||||
await this.request('entities.scan', args)
|
await this.request('entities.scan', args)
|
||||||
},
|
},
|
||||||
|
|
||||||
async sync() {
|
async sync(setLoading=true) {
|
||||||
this.loading = true
|
if (setLoading)
|
||||||
|
this.loading = true
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.entities = (await this.request('entities.get')).reduce((obj, entity) => {
|
this.entities = (await this.request('entities.get')).reduce((obj, entity) => {
|
||||||
|
@ -270,8 +271,10 @@ export default {
|
||||||
}, {})
|
}, {})
|
||||||
|
|
||||||
this.selector.selectedEntities = this.entityGroups.id
|
this.selector.selectedEntities = this.entityGroups.id
|
||||||
|
this.refreshEntitiesCache()
|
||||||
} finally {
|
} finally {
|
||||||
this.loading = false
|
if (setLoading)
|
||||||
|
this.loading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -362,6 +365,23 @@ export default {
|
||||||
this.modalVisible = false
|
this.modalVisible = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
loadCachedEntities() {
|
||||||
|
const cachedEntities = localStorage.getItem('entities')
|
||||||
|
if (cachedEntities) {
|
||||||
|
this.entities = JSON.parse(cachedEntities)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshEntitiesCache() {
|
||||||
|
if (this.loading)
|
||||||
|
return
|
||||||
|
|
||||||
|
window.localStorage.setItem('entities', JSON.stringify(this.entities))
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
async mounted() {
|
async mounted() {
|
||||||
|
@ -377,8 +397,16 @@ export default {
|
||||||
'platypush.message.event.entities.EntityDeleteEvent'
|
'platypush.message.event.entities.EntityDeleteEvent'
|
||||||
)
|
)
|
||||||
|
|
||||||
await this.sync()
|
if (!this.loadCachedEntities()) {
|
||||||
await this.refresh()
|
await this.sync()
|
||||||
|
await this.refresh()
|
||||||
|
} else {
|
||||||
|
this.refresh()
|
||||||
|
this.sync(false).then(() => this.refresh())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh the entities cache every 10 seconds
|
||||||
|
setInterval(() => this.refreshEntitiesCache(), 10000)
|
||||||
},
|
},
|
||||||
|
|
||||||
unmounted() {
|
unmounted() {
|
||||||
|
|
Loading…
Reference in a new issue