aboutsummaryrefslogtreecommitdiff
path: root/src/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/services')
-rw-r--r--src/services/desktop_notification_utils/desktop_notification_utils.js14
-rw-r--r--src/services/notification_utils/notification_utils.js6
-rw-r--r--src/services/sw/sw.js2
3 files changed, 18 insertions, 4 deletions
diff --git a/src/services/desktop_notification_utils/desktop_notification_utils.js b/src/services/desktop_notification_utils/desktop_notification_utils.js
index c31a1030..eb58f39b 100644
--- a/src/services/desktop_notification_utils/desktop_notification_utils.js
+++ b/src/services/desktop_notification_utils/desktop_notification_utils.js
@@ -1,8 +1,18 @@
-import { showDesktopNotification as swDesktopNotification } from '../sw/sw.js'
+import { showDesktopNotification as swDesktopNotification, isSWSupported } from '../sw/sw.js'
+const state = { failCreateNotif: false }
export const showDesktopNotification = (rootState, desktopNotificationOpts) => {
if (!('Notification' in window && window.Notification.permission === 'granted')) return
if (rootState.statuses.notifications.desktopNotificationSilence) { return }
- swDesktopNotification(desktopNotificationOpts)
+ if (isSWSupported()) {
+ swDesktopNotification(desktopNotificationOpts)
+ } else if (!state.failCreateNotif) {
+ try {
+ const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)
+ setTimeout(desktopNotification.close.bind(desktopNotification), 5000)
+ } catch {
+ state.failCreateNotif = true
+ }
+ }
}
diff --git a/src/services/notification_utils/notification_utils.js b/src/services/notification_utils/notification_utils.js
index 0f8b9b02..ede1cc3d 100644
--- a/src/services/notification_utils/notification_utils.js
+++ b/src/services/notification_utils/notification_utils.js
@@ -76,8 +76,12 @@ export const unseenNotificationsFromStore = store =>
filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)
export const prepareNotificationObject = (notification, i18n) => {
+ const nodes = document.querySelectorAll('link[rel="icon"]')
+ const icon = nodes[0].href
+
const notifObj = {
- tag: notification.id
+ tag: notification.id,
+ icon
}
const status = notification.status
const title = notification.from_profile.name
diff --git a/src/services/sw/sw.js b/src/services/sw/sw.js
index b13c9a1b..3b62bac8 100644
--- a/src/services/sw/sw.js
+++ b/src/services/sw/sw.js
@@ -10,7 +10,7 @@ function urlBase64ToUint8Array (base64String) {
return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))
}
-function isSWSupported () {
+export function isSWSupported () {
return 'serviceWorker' in navigator
}