This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
2020-10-12 15:37:21 -07:00
|
|
|
// Handles browser quirks, based on
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API
|
|
|
|
|
|
|
|
const checkNotificationPromise = () => {
|
|
|
|
try {
|
2020-11-23 08:35:14 -08:00
|
|
|
// eslint-disable-next-line promise/catch-or-return
|
2020-10-12 15:37:21 -07:00
|
|
|
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()) {
|
2020-11-23 08:35:14 -08:00
|
|
|
Notification.requestPermission().then((permission) => handlePermission(permission, callback)).catch(console.warn);
|
2020-10-12 15:37:21 -07:00
|
|
|
} else {
|
|
|
|
Notification.requestPermission((permission) => handlePermission(permission, callback));
|
|
|
|
}
|
|
|
|
};
|