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