From f20b27622fc0533224fa8cae6dc12f789af8adcd Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Tue, 27 Aug 2019 10:55:24 +0200 Subject: [PATCH] See #890: Display the number of unhandled reports in the sidebar --- front/src/components/Sidebar.vue | 4 ++++ front/src/store/auth.js | 7 ++++++- front/src/store/ui.js | 6 ++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 03084a634..6f72a9c2f 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -95,6 +95,10 @@ class="item" :to="{name: 'manage.moderation.domains.list'}"> <i class="shield icon"></i><translate translate-context="*/Moderation/*">Moderation</translate> + <div + v-if="$store.state.ui.notifications.pendingReviewReports > 0" + :title="labels.pendingReviewReports" + :class="['ui', 'teal', 'label']">{{ $store.state.ui.notifications.pendingReviewReports }}</div> </router-link> <router-link v-if="$store.state.auth.availablePermissions['settings']" diff --git a/front/src/store/auth.js b/front/src/store/auth.js index 52cc98a6d..e1b14ac82 100644 --- a/front/src/store/auth.js +++ b/front/src/store/auth.js @@ -126,7 +126,12 @@ export default { resolve(response.data) }) dispatch('ui/fetchUnreadNotifications', null, { root: true }) - dispatch('ui/fetchPendingReviewEdits', null, { root: true }) + if (response.data.permissions.library) { + dispatch('ui/fetchPendingReviewEdits', null, { root: true }) + } + if (response.data.permissions.moderation) { + dispatch('ui/fetchPendingReviewReports', null, { root: true }) + } dispatch('favorites/fetch', null, { root: true }) dispatch('moderation/fetchContentFilters', null, { root: true }) dispatch('playlists/fetchOwn', null, { root: true }) diff --git a/front/src/store/ui.js b/front/src/store/ui.js index d13a92d88..b70863465 100644 --- a/front/src/store/ui.js +++ b/front/src/store/ui.js @@ -14,6 +14,7 @@ export default { notifications: { inbox: 0, pendingReviewEdits: 0, + pendingReviewReports: 0, }, websocketEventsHandlers: { 'inbox.item_added': {}, @@ -74,6 +75,11 @@ export default { commit('notifications', {type: 'pendingReviewEdits', count: response.data.count}) }) }, + fetchPendingReviewReports ({commit, rootState}, payload) { + axios.get('manage/moderation/reports/', {params: {is_handled: 'false', page_size: 1}}).then((response) => { + commit('notifications', {type: 'pendingReviewReports', count: response.data.count}) + }) + }, websocketEvent ({state}, event) { let handlers = state.websocketEventsHandlers[event.type] console.log('Dispatching websocket event', event, handlers) -- GitLab