logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/

push_notifications_plugin.js (1276B)


  1. import { useInterfaceStore } from 'src/stores/interface'
  2. export default (store) => {
  3. store.subscribe((mutation, state) => {
  4. const vapidPublicKey = state.instance.vapidPublicKey
  5. const webPushNotification = state.config.webPushNotifications
  6. const permission = useInterfaceStore().notificationPermission === 'granted'
  7. const user = state.users.currentUser
  8. const isUserMutation = mutation.type === 'setCurrentUser'
  9. const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'
  10. const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'
  11. const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'
  12. const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'
  13. if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {
  14. if (user && vapidPublicKey && permission && webPushNotification) {
  15. return store.dispatch('registerPushNotifications')
  16. } else if (isUserConfigMutation && !webPushNotification) {
  17. return store.dispatch('unregisterPushNotifications')
  18. }
  19. }
  20. })
  21. }