Respect subject lines in notifications (#23)

Reviewed-on: https://akkoma.dev/AkkomaGang/pleroma-fe/pulls/23
Co-authored-by: sfr <sol@solfisher.com>
Co-committed-by: sfr <sol@solfisher.com>
This commit is contained in:
sfr 2022-06-27 16:15:24 +00:00 committed by floatingghost
parent 06343addef
commit 716320de35
4 changed files with 21 additions and 3 deletions

View file

@ -65,6 +65,14 @@
{{ $t('settings.enable_web_push_notifications') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting
path="webPushHideIfCW"
expert="1"
>
{{ $t('settings.notification_setting_hide_if_cw') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting
path="serverSide_webPushHideContents"

View file

@ -546,6 +546,7 @@
"notification_setting_block_from_strangers": "Block notifications from users who you do not follow",
"notification_setting_privacy": "Privacy",
"notification_setting_hide_notification_contents": "Hide the sender and contents of push notifications",
"notification_setting_hide_if_cw": "Hide the contents of push notifications if under a Content Warning",
"notification_mutes": "To stop receiving notifications from a specific user, use a mute.",
"notification_blocks": "Blocking a user stops all notifications as well as unsubscribes them.",
"enable_web_push_notifications": "Enable web push notifications",

View file

@ -63,6 +63,7 @@ export const defaultState = {
polls: true
},
webPushNotifications: false,
webPushHideIfCW: true,
muteWords: [],
highlight: {},
interfaceLanguage: browserLocale,

View file

@ -58,7 +58,7 @@ export const maybeShowNotification = (store, notification) => {
if (!visibleTypes(store).includes(notification.type)) return
if (notification.type === 'mention' && isMutedNotification(store, notification)) return
const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)
const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n, store)
showDesktopNotification(rootState, notificationObject)
}
@ -74,7 +74,7 @@ export const filteredNotificationsFromStore = (store, types) => {
export const unseenNotificationsFromStore = store =>
filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)
export const prepareNotificationObject = (notification, i18n) => {
export const prepareNotificationObject = (notification, i18n, store) => {
const notifObj = {
tag: notification.id
}
@ -109,8 +109,16 @@ export const prepareNotificationObject = (notification, i18n) => {
} else if (i18nString) {
notifObj.body = i18n.t('notifications.' + i18nString)
} else if (isStatusNotification(notification.type)) {
if (notification.status.summary) {
if (store.getters.mergedConfig.webPushHideIfCW) {
notifObj.body = notification.status.summary
} else {
notifObj.body = `${notification.status.summary}:\n${notification.status.text}`
}
} else {
notifObj.body = notification.status.text
}
}
// Shows first attached non-nsfw image, if any. Should add configuration for this somehow...
if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&