logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: 38b6f0a013ec09b4c54bfe830a92bde46290bda1
parent cdc0959135a1bb9c3fd0c4750a9cb6ede5d189cb
Author: Henry Jameson <me@hjkos.com>
Date:   Mon, 20 Nov 2023 00:14:56 +0200

fix notification dot in favicon and mobile nav, minor refactor

Diffstat:

Msrc/components/notifications/notifications.js10+++-------
Msrc/services/notification_utils/notification_utils.js18+++++++++++++-----
2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js @@ -8,7 +8,8 @@ import { notificationsFromStore, filteredNotificationsFromStore, unseenNotificationsFromStore, - countExtraNotifications + countExtraNotifications, + ACTIONABLE_NOTIFICATION_TYPES } from '../../services/notification_utils/notification_utils.js' import FaviconService from '../../services/favicon_service/favicon_service.js' import { library } from '@fortawesome/fontawesome-svg-core' @@ -21,7 +22,6 @@ library.add( ) const DEFAULT_SEEN_TO_DISPLAY_COUNT = 30 -const ACTIONABLE_NOTIFICATION_TYPES = new Set(['mention', 'pleroma:report', 'follow_request']) const Notifications = { components: { @@ -85,11 +85,7 @@ const Notifications = { return `${this.unseenCount ? this.unseenCount : ''}${this.extraNotificationsCount ? '*' : ''}` }, unseenCount () { - if (this.ignoreInactionableSeen) { - return this.unseenNotifications.filter(n => ACTIONABLE_NOTIFICATION_TYPES.has(n.type)).length - } else { - return this.unseenNotifications.length - } + return this.unseenNotifications.length }, ignoreInactionableSeen () { return this.$store.getters.mergedConfig.ignoreInactionableSeen }, extraNotificationsCount () { diff --git a/src/services/notification_utils/notification_utils.js b/src/services/notification_utils/notification_utils.js @@ -1,9 +1,10 @@ -import { filter, includes } from 'lodash' import { muteWordHits } from '../status_parser/status_parser.js' import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js' import FaviconService from 'src/services/favicon_service/favicon_service.js' +export const ACTIONABLE_NOTIFICATION_TYPES = new Set(['mention', 'pleroma:report', 'follow_request']) + let cachedBadgeUrl = null export const notificationsFromStore = store => store.state.notifications.data @@ -24,9 +25,9 @@ export const visibleTypes = store => { ].filter(_ => _)) } -const statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll'] +const statusNotifications = new Set(['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']) -export const isStatusNotification = (type) => includes(statusNotifications, type) +export const isStatusNotification = (type) => statusNotifications.has(type) export const isValidNotification = (notification) => { if (isStatusNotification(notification.type) && !notification.status) { @@ -76,8 +77,15 @@ export const filteredNotificationsFromStore = (store, types) => { ) } -export const unseenNotificationsFromStore = store => - filter(filteredNotificationsFromStore(store), ({ seen }) => !seen) +export const unseenNotificationsFromStore = store => { + const ignoreInactionableSeen = store.getters.mergedConfig.ignoreInactionableSeen + + return filteredNotificationsFromStore(store).filter(({ seen, type }) => { + if (!ignoreInactionableSeen) return !seen + if (seen) return false + return ACTIONABLE_NOTIFICATION_TYPES.has(type) + }) +} export const prepareNotificationObject = (notification, i18n) => { if (cachedBadgeUrl === null) {