catstodon/app/javascript/flavours/glitch/utils/notifications.js
Nick Schonning 6fdd596cc8 [Glitch] Enable ESLint Promise plugin defaults
Port 5e1c0c3d94 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-02-19 10:53:18 +01:00

30 lines
946 B
JavaScript

// Handles browser quirks, based on
// https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API
const checkNotificationPromise = () => {
try {
// eslint-disable-next-line promise/catch-or-return, promise/valid-params
Notification.requestPermission().then();
} catch(e) {
return false;
}
return true;
};
const handlePermission = (permission, callback) => {
// Whatever the user answers, we make sure Chrome stores the information
if(!('permission' in Notification)) {
Notification.permission = permission;
}
callback(Notification.permission);
};
export const requestNotificationPermission = (callback) => {
if (checkNotificationPromise()) {
Notification.requestPermission().then((permission) => handlePermission(permission, callback)).catch(console.warn);
} else {
Notification.requestPermission((permission) => handlePermission(permission, callback));
}
};