Browse Source

Only display web push notifications after API call (fixes #7902) (#8396)

* Only display web push notifications after API call (fixes #7902)

* Decode then truncate instead of truncating then decoding in webpush serializer
pull/4/head
ThibG 5 years ago
committed by Eugen Rochko
parent
commit
7786e1357b
2 changed files with 13 additions and 11 deletions
  1. +11
    -9
      app/javascript/mastodon/service_worker/web_push_notifications.js
  2. +2
    -2
      app/serializers/web/notification_serializer.rb

+ 11
- 9
app/javascript/mastodon/service_worker/web_push_notifications.js View File

@ -80,15 +80,7 @@ const handlePush = (event) => {
// Placeholder until more information can be loaded
event.waitUntil(
notify({
title,
body,
icon,
tag: notification_id,
timestamp: new Date(),
badge: '/badge.png',
data: { access_token, preferred_locale, url: '/web/notifications' },
}).then(() => fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token)).then(notification => {
fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token).then(notification => {
const options = {};
options.title = formatMessage(`notification.${notification.type}`, preferred_locale, { name: notification.account.display_name.length > 0 ? notification.account.display_name : notification.account.username });
@ -112,6 +104,16 @@ const handlePush = (event) => {
}
return notify(options);
}).catch(() => {
return notify({
title,
body,
icon,
tag: notification_id,
timestamp: new Date(),
badge: '/badge.png',
data: { access_token, preferred_locale, url: '/web/notifications' },
});
})
);
};

+ 2
- 2
app/serializers/web/notification_serializer.rb View File

@ -33,7 +33,7 @@ class Web::NotificationSerializer < ActiveModel::Serializer
end
def body
str = truncate(strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note), length: 140)
HTMLEntities.new.decode(str.to_str) # Do not encode entities, since this value will not be used in HTML
str = strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note)
truncate(HTMLEntities.new.decode(str.to_str), length: 140) # Do not encode entities, since this value will not be used in HTML
end
end

Loading…
Cancel
Save