2023-11-08 19:17:01 -05:00
|
|
|
export const CLEAR_NOTIFICATIONS = 'CLEAR_NOTIFICATIONS'
|
|
|
|
|
|
|
|
export const clearNotifications = () => navigator.serviceWorker?.controller?.postMessage({ action: CLEAR_NOTIFICATIONS })
|
|
|
|
|
|
|
|
const badgingApiSupported = (sw = window) => 'setAppBadge' in sw.navigator
|
|
|
|
|
2025-01-08 19:40:25 +01:00
|
|
|
// we don't need this, we can use the badging API
|
|
|
|
/* const permissionGranted = async (sw = window) => {
|
2023-11-25 12:32:41 -05:00
|
|
|
const name = 'notifications'
|
2023-11-08 19:17:01 -05:00
|
|
|
let permission
|
|
|
|
try {
|
|
|
|
permission = await sw.navigator.permissions.query({ name })
|
|
|
|
} catch (err) {
|
|
|
|
console.error('Failed to check permissions', err)
|
|
|
|
}
|
2023-11-25 12:32:41 -05:00
|
|
|
return permission?.state === 'granted' || sw.Notification?.permission === 'granted'
|
2025-01-08 19:40:25 +01:00
|
|
|
} */
|
2023-11-08 19:17:01 -05:00
|
|
|
|
2025-01-08 19:40:25 +01:00
|
|
|
// Apple requirement: onPush doesn't accept async functions
|
|
|
|
export const setAppBadge = (sw = window, count) => {
|
|
|
|
if (!badgingApiSupported(sw)) return
|
2023-11-08 19:17:01 -05:00
|
|
|
try {
|
2025-01-08 19:40:25 +01:00
|
|
|
return sw.navigator.setAppBadge(count) // Return a Promise to be handled
|
2023-11-08 19:17:01 -05:00
|
|
|
} catch (err) {
|
|
|
|
console.error('Failed to set app badge', err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-01-08 19:40:25 +01:00
|
|
|
export const clearAppBadge = (sw = window) => {
|
|
|
|
if (!badgingApiSupported(sw)) return
|
2023-11-08 19:17:01 -05:00
|
|
|
try {
|
2025-01-08 19:40:25 +01:00
|
|
|
return sw.navigator.clearAppBadge() // Return a Promise to be handled
|
2023-11-08 19:17:01 -05:00
|
|
|
} catch (err) {
|
|
|
|
console.error('Failed to clear app badge', err)
|
|
|
|
}
|
|
|
|
}
|