commit: 5c48ea2f1abb21f88990c000e0f158dfa19fa4d7 parent 82db31f7ac32443b2a5d51ed3ce6d52cd9dcfac7 Author: marcin mikołajczak <git@mkljczk.pl> Date: Sat, 25 May 2024 08:42:32 +0200 Support `status` notification type Signed-off-by: marcin mikołajczak <git@mkljczk.pl>Diffstat:
11 files changed, 42 insertions(+), 4 deletions(-)diff --git a/changelog.d/status-notification-type.add b/changelog.d/status-notification-type.add@@ -0,0 +1 @@ +Support `status` notification type +\ No newline at end of filediff --git a/src/components/interactions/interactions.js b/src/components/interactions/interactions.js@@ -3,6 +3,7 @@ import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx' const tabModeDict = { mentions: ['mention'], + statuses: ['status'], 'likes+repeats': ['repeat', 'like'], follows: ['follow'], reactions: ['pleroma:emoji_reaction'],diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue@@ -1,6 +1,6 @@ <template> <article - v-if="notification.type === 'mention'" + v-if="notification.type === 'mention' || notification.type === 'status'" > <Status class="Notification"diff --git a/src/components/notifications/notification_filters.vue b/src/components/notifications/notification_filters.vue@@ -45,6 +45,15 @@ </button> <button class="menu-item dropdown-item" + @click="toggleNotificationFilter('statuses')" + > + <span + class="input menu-checkbox" + :class="{ 'menu-checkbox-checked': filters.statuses }" + />{{ $t('settings.notification_visibility_statuses') }} + </button> + <button + class="menu-item dropdown-item" @click="toggleNotificationFilter('emojiReactions')" > <spandiff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js@@ -33,7 +33,7 @@ const Notifications = { // Disables panel styles, unread mark, potentially other notification-related actions // meant for "Interactions" timeline minimalMode: Boolean, - // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in "Interactions" timeline + // Custom filter mode, an array of strings, possible values 'mention', 'status', 'repeat', 'like', 'follow', used to override global filter for use in "Interactions" timeline filterMode: Array, // Do not show extra notifications noExtra: {diff --git a/src/components/settings_modal/tabs/notifications_tab.vue b/src/components/settings_modal/tabs/notifications_tab.vue@@ -61,6 +61,21 @@ </ul> </li> <li> + <h4> {{ $t('settings.notification_visibility_statuses') }}</h4> + <ul class="setting-list"> + <li> + <BooleanSetting path="notificationVisibility.statuses"> + {{ $t('settings.notification_visibility_in_column') }} + </BooleanSetting> + </li> + <li> + <BooleanSetting path="notificationNative.statuses"> + {{ $t('settings.notification_visibility_native_notifications') }} + </BooleanSetting> + </li> + </ul> + </li> + <li> <h4> {{ $t('settings.notification_visibility_likes') }}</h4> <ul class="setting-list"> <li>diff --git a/src/i18n/en.json b/src/i18n/en.json@@ -212,7 +212,8 @@ "unread_follow_requests": "{num} new follow request | {num} new follow requests", "configuration_tip": "You can customize what to display here in {theSettings}. {dismiss}", "configuration_tip_settings": "the settings", - "configuration_tip_dismiss": "Do not show again" + "configuration_tip_dismiss": "Do not show again", + "subscribed_status": "posted" }, "polls": { "add_poll": "Add poll", @@ -588,6 +589,7 @@ "notification_visibility_moves": "User Migrates", "notification_visibility_emoji_reactions": "Reactions", "notification_visibility_polls": "Ends of polls you voted in", + "notification_visibility_statuses": "Subscriptions", "notification_show_extra": "Show extra notifications in the notifications column", "notification_extra_chats": "Show unread chats", "notification_extra_announcements": "Show unread announcements",diff --git a/src/modules/config.js b/src/modules/config.js@@ -60,6 +60,7 @@ export const defaultState = { notificationVisibility: { follows: true, mentions: true, + statuses: true, likes: true, repeats: true, moves: true, @@ -72,6 +73,7 @@ export const defaultState = { notificationNative: { follows: true, mentions: true, + statuses: true, likes: false, repeats: false, moves: false,diff --git a/src/services/notification_utils/notification_utils.js b/src/services/notification_utils/notification_utils.js@@ -18,6 +18,7 @@ export const visibleTypes = store => { return ([ notificationVisibility.likes && 'like', notificationVisibility.mentions && 'mention', + notificationVisibility.statuses && 'status', notificationVisibility.repeats && 'repeat', notificationVisibility.follows && 'follow', notificationVisibility.followRequest && 'follow_request', @@ -28,7 +29,7 @@ export const visibleTypes = store => { ].filter(_ => _)) } -const statusNotifications = new Set(['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']) +const statusNotifications = new Set(['like', 'mention', 'status', 'repeat', 'pleroma:emoji_reaction', 'poll']) export const isStatusNotification = (type) => statusNotifications.has(type) @@ -118,6 +119,9 @@ export const prepareNotificationObject = (notification, i18n) => { case 'like': i18nString = 'favorited_you' break + case 'status': + i18nString = 'subscribed_status' + break case 'repeat': i18nString = 'repeated_you' breakdiff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js@@ -5,6 +5,7 @@ import { promiseInterval } from '../promise_interval/promise_interval.js' // Note: chat_mention excluded as pleroma-fe polls them separately const mastoApiNotificationTypes = [ 'mention', + 'status', 'favourite', 'reblog', 'follow',diff --git a/src/sw.js b/src/sw.js@@ -38,6 +38,8 @@ const setSettings = async () => { switch (k) { case 'mentions': return 'mention' + case 'statuses': + return 'status' case 'likes': return 'like' case 'repeats':