diff options
| author | HJ <spam@hjkos.com> | 2018-12-26 13:58:11 +0000 |
|---|---|---|
| committer | HJ <spam@hjkos.com> | 2018-12-26 13:58:11 +0000 |
| commit | 754cb23f354369d57dbe3f36e530709850ae7028 (patch) | |
| tree | 484896a753c447ec5016990611724c16860dd0a0 /src/lib/push_notifications_plugin.js | |
| parent | 9ba969d90c6f464c58e4ed0fe48401574c68b8a6 (diff) | |
| parent | c5847349e0afb14702d1746fac142b8aeb2020e7 (diff) | |
Merge branch 'improve_push' into 'develop'
Improve web push notifications
Closes #231
See merge request pleroma/pleroma-fe!438
Diffstat (limited to 'src/lib/push_notifications_plugin.js')
| -rw-r--r-- | src/lib/push_notifications_plugin.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/push_notifications_plugin.js b/src/lib/push_notifications_plugin.js new file mode 100644 index 00000000..f75bb823 --- /dev/null +++ b/src/lib/push_notifications_plugin.js @@ -0,0 +1,22 @@ +export default (store) => { + store.subscribe((mutation, state) => { + const vapidPublicKey = state.instance.vapidPublicKey + const webPushNotification = state.config.webPushNotifications + const permission = state.interface.notificationPermission === 'granted' + const user = state.users.currentUser + + const isUserMutation = mutation.type === 'setCurrentUser' + const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey' + const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted' + const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications' + const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility' + + if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) { + if (user && vapidPublicKey && permission && webPushNotification) { + return store.dispatch('registerPushNotifications') + } else if (isUserConfigMutation && !webPushNotification) { + return store.dispatch('unregisterPushNotifications') + } + } + }) +} |
