commit: 0d6a9e8a647be860b10506aecaafb4ff0f10150f
parent a1641193b5b7c72e919b9848b167bc4d4a40444b
Author: tusooa <tusooa@kazv.moe>
Date: Sun, 13 Aug 2023 23:57:34 -0400
Display extra notifications on notifications column
Diffstat:
5 files changed, 67 insertions(+), 2 deletions(-)
diff --git a/src/components/extra_notifications/extra_notifications.js b/src/components/extra_notifications/extra_notifications.js
@@ -0,0 +1,9 @@
+import { mapGetters } from 'vuex'
+
+const ExtraNotifications = {
+ computed: {
+ ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])
+ }
+}
+
+export default ExtraNotifications
diff --git a/src/components/extra_notifications/extra_notifications.vue b/src/components/extra_notifications/extra_notifications.vue
@@ -0,0 +1,42 @@
+<template>
+ <div class="ExtraNotifications">
+ <router-link
+ v-if="unreadChatCount"
+ class="button-unstyled -link extra-notification"
+ to="chats"
+ >
+ {{ $tc('notifications.unread_chats', unreadChatCount, { num: unreadChatCount }) }}
+ </router-link>
+ <router-link
+ v-if="unreadAnnouncementCount"
+ class="button-unstyled -link extra-notification"
+ to="announcements"
+ >
+ {{ $tc('notifications.unread_announcements', unreadAnnouncementCount, { num: unreadAnnouncementCount }) }}
+ </router-link>
+ </div>
+</template>
+
+<script src="./extra_notifications.js" />
+
+<style lang="scss">
+@import "../../variables";
+
+.ExtraNotifications {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+
+ .extra-notification {
+ width: 100%;
+ padding: 1em;
+ }
+
+ .extra-notification {
+ border-bottom: 1px solid;
+ border-color: $fallback--border;
+ border-color: var(--border, $fallback--border);
+ }
+}
+</style>
diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js
@@ -1,6 +1,7 @@
import { computed } from 'vue'
import { mapGetters } from 'vuex'
import Notification from '../notification/notification.vue'
+import ExtraNotifications from '../extra_notifications/extra_notifications.vue'
import NotificationFilters from './notification_filters.vue'
import notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'
import {
@@ -23,7 +24,8 @@ const DEFAULT_SEEN_TO_DISPLAY_COUNT = 30
const Notifications = {
components: {
Notification,
- NotificationFilters
+ NotificationFilters,
+ ExtraNotifications
},
props: {
// Disables panel styles, unread mark, potentially other notification-related actions
@@ -94,6 +96,9 @@ const Notifications = {
return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)
},
noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },
+ showExtraNotifications () {
+ return true
+ },
...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])
},
mounted () {
diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue
@@ -55,6 +55,13 @@
role="feed"
>
<div
+ v-if="showExtraNotifications"
+ role="listitem"
+ class="notification"
+ >
+ <extra-notifications />
+ </div>
+ <div
v-for="notification in notificationsToDisplay"
:key="notification.id"
role="listitem"
diff --git a/src/i18n/en.json b/src/i18n/en.json
@@ -205,7 +205,9 @@
"migrated_to": "migrated to",
"reacted_with": "reacted with {0}",
"submitted_report": "submitted a report",
- "poll_ended": "poll has ended"
+ "poll_ended": "poll has ended",
+ "unread_announcements": "{num} unread announcement | {num} unread announcements",
+ "unread_chats": "{num} unread chat | {num} unread chats"
},
"polls": {
"add_poll": "Add poll",