From d4f8e51caf5243f8292ee51d89c555c3b622357b Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Fri, 12 May 2023 03:49:20 +0200 Subject: [PATCH] A less blocking implementation of the entities loading UI logic. --- .../src/components/panels/Entities/Index.vue | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/platypush/backend/http/webapp/src/components/panels/Entities/Index.vue b/platypush/backend/http/webapp/src/components/panels/Entities/Index.vue index 7905b266d..299b9a8ff 100644 --- a/platypush/backend/http/webapp/src/components/panels/Entities/Index.vue +++ b/platypush/backend/http/webapp/src/components/panels/Entities/Index.vue @@ -249,11 +249,12 @@ export default { return obj }, {}) - await this.request('entities.scan', args) + this.request('entities.scan', args) }, - async sync() { - this.loading = true + async sync(setLoading=true) { + if (setLoading) + this.loading = true try { this.entities = (await this.request('entities.get')).reduce((obj, entity) => { @@ -272,7 +273,8 @@ export default { this.selector.selectedEntities = this.entityGroups.id this.refreshEntitiesCache() } finally { - this.loading = false + if (setLoading) + this.loading = false } }, @@ -367,12 +369,18 @@ export default { loadCachedEntities() { const cachedEntities = window.localStorage.getItem('entities') if (cachedEntities) { - this.entities = JSON.parse(cachedEntities) - if (this.entities) { - Object.values(this.entities).forEach((entity) => this.onEntityUpdate({entity: entity})) - this.selector.selectedEntities = this.entityGroups.id - return true + try { + this.entities = JSON.parse(cachedEntities) + if (!this.entities) + throw Error('The list of cached entities is null') + } catch (e) { + console.warning('Could not parse cached entities', e) + return false } + + Object.values(this.entities).forEach((entity) => this.onEntityUpdate({entity: entity})) + this.selector.selectedEntities = this.entityGroups.id + return true } return false @@ -401,9 +409,10 @@ export default { if (!this.loadCachedEntities()) { await this.sync() - await this.refresh() + this.refresh() } else { await this.request('entities.scan') + this.sync() } setInterval(() => this.refreshEntitiesCache(), 10000)