useBrowserNotifications.ts 582 B

123456789101112131415161718192021
  1. // Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. import { usePermission } from '@vueuse/core'
  3. import { computed } from 'vue'
  4. export const useBrowserNotifications = () => {
  5. const notificationPermission = usePermission('notifications')
  6. const isGranted = computed(() => notificationPermission.value === 'granted')
  7. const requestNotification = async () =>
  8. 'requestPermission' in Notification
  9. ? Notification.requestPermission()
  10. : Promise.resolve()
  11. return {
  12. notificationPermission,
  13. isGranted,
  14. requestNotification,
  15. }
  16. }