notification.ts 852 B

12345678910111213141516171819202122232425262728293031
  1. import { Options, Permission } from './types/notification'
  2. import { promisified } from './tauri'
  3. async function isPermissionGranted(): Promise<boolean | null> {
  4. if (window.Notification.permission !== 'default') {
  5. return await Promise.resolve(window.Notification.permission === 'granted')
  6. }
  7. return await promisified({
  8. cmd: 'isNotificationPermissionGranted'
  9. })
  10. }
  11. async function requestPermission(): Promise<Permission> {
  12. return await window.Notification.requestPermission()
  13. }
  14. function sendNotification(options: Options | string): void {
  15. if (typeof options === 'string') {
  16. // eslint-disable-next-line no-new
  17. new window.Notification(options)
  18. } else {
  19. // eslint-disable-next-line no-new
  20. new window.Notification(options.title, options)
  21. }
  22. }
  23. export {
  24. sendNotification,
  25. requestPermission,
  26. isPermissionGranted
  27. }