notification.js 968 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const createMessage = async data => {
  2. if (self.Notification.permission === 'granted') {
  3. const {title, body, ...rest} = data
  4. const n = new Notification(title, {
  5. body,
  6. data: rest
  7. })
  8. n.addEventListener('click', () => {
  9. n.close()
  10. self.postMessage({
  11. type: 'NotificationClicked',
  12. data: rest
  13. })
  14. })
  15. n.addEventListener('show', () => {
  16. self.postMessage({
  17. type: 'NotificationShowed',
  18. data: rest
  19. })
  20. })
  21. n.addEventListener('error', () => {
  22. self.postMessage({
  23. type: 'NotificationErrored',
  24. data: rest
  25. })
  26. })
  27. n.addEventListener('close', () => {
  28. self.postMessage({
  29. type: 'NotificationClosed',
  30. data: rest
  31. })
  32. })
  33. }
  34. }
  35. self.addEventListener('message', evt => {
  36. const {type, ...rest} = evt.data
  37. if (type === 'create') {
  38. createMessage(rest)
  39. }
  40. })