diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 03084a634d1dc0c2c7cf16113c324e3468925616..6f72a9c2fbd73c9e7160d8d7560ca3a878a47c54 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 52cc98a6de7abde1ebfb1c03bd5ea434e1fa2af8..e1b14ac828923c0e67c43d7b60d86a5f6ff8e384 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 d13a92d8820776bbee8c052e90f36c7c52cb1a56..b7086346572f3da2ef5708e0fb7ed5100136c7ff 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)