From 3b5dfe2f3865bceb1974ada95bdcc0f2b76f1937 Mon Sep 17 00:00:00 2001 From: Andrea Vos Date: Sat, 30 Jul 2022 16:37:39 +0200 Subject: [PATCH] [admin][optim] load abuse reports and translation proposals client-side / async --- routes/admin.vue | 139 ++++++++++++++++++++++++----------------------- 1 file changed, 72 insertions(+), 67 deletions(-) diff --git a/routes/admin.vue b/routes/admin.vue index c98e07f79..70a4d3418 100644 --- a/routes/admin.vue +++ b/routes/admin.vue @@ -156,60 +156,64 @@ -
-

- - Translation proposals ({{translationProposals.length}}) -

+

@@ -219,7 +223,9 @@

- + + +
@@ -291,6 +297,8 @@ import {deepSet, head} from "../src/helpers"; adminNotifications: this.$user().adminNotifications ?? 7, translator, missingTranslations: translator.listMissingTranslations(), + abuseReports: undefined, + translationProposals: undefined, } }, async asyncData({ app, store }) { @@ -299,22 +307,19 @@ import {deepSet, head} from "../src/helpers"; stats = await app.$axios.$get(`/admin/stats`); } catch {} - let abuseReports = []; - try { - abuseReports = await app.$axios.$get(`/admin/reports`); - } catch {} - - let translationProposals = []; - try { - translationProposals = await app.$axios.$get(`/translations/proposals`); - } catch {} - return { stats, - abuseReports, - translationProposals }; }, + async mounted() { + this.$axios.$get(`/admin/reports`) + .then(r => this.abuseReports = r) + .catch(); + + this.$axios.$get(`/translations/proposals`) + .then(r => this.translationProposals = r) + .catch(); + }, methods: { async impersonate(email) { const { token } = await this.$axios.$get(`/admin/impersonate/${encodeURIComponent(email)}`); @@ -343,11 +348,11 @@ import {deepSet, head} from "../src/helpers"; return r; }, abuseReportsActiveCount() { - return this.abuseReports.filter(r => !r.isHandled).length; + return this.abuseReports ? this.abuseReports.filter(r => !r.isHandled).length : '–'; }, translationsProposalsSuml() { const data = {}; - for (let tp of this.translationProposals) { + for (let tp of this.translationProposals || []) { deepSet(data, tp.tKey, tp.tValue); } return new Suml().dump(data);