diff options
| author | HJ <spam@hjkos.com> | 2018-12-13 13:46:57 +0000 |
|---|---|---|
| committer | HJ <spam@hjkos.com> | 2018-12-13 13:46:57 +0000 |
| commit | 8e4777ccc6bf72b56a0905ca491c8e0e97fb73cf (patch) | |
| tree | 53e98662ef34b8bccc845f627c125528c1c1436c /src/main.js | |
| parent | e443716bcd616ad61efae161624dd970841a935c (diff) | |
| parent | a8521fc8d99ee7ee5142e2c7c642eee0fc14ed93 (diff) | |
Merge branch 'feature/push-subscriptions' into 'develop'
add service worker and push notifications
See merge request pleroma/pleroma-fe!404
Diffstat (limited to 'src/main.js')
| -rw-r--r-- | src/main.js | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/main.js b/src/main.js index 378fe95c..23ea854b 100644 --- a/src/main.js +++ b/src/main.js @@ -50,6 +50,32 @@ const persistedStateOptions = { 'oauth' ] } + +const registerPushNotifications = store => { + store.subscribe((mutation, state) => { + const vapidPublicKey = state.instance.vapidPublicKey + const permission = state.interface.notificationPermission === 'granted' + const isUserMutation = mutation.type === 'setCurrentUser' + + if (isUserMutation && vapidPublicKey && permission) { + return store.dispatch('registerPushNotifications') + } + + const user = state.users.currentUser + const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey' + + if (isVapidMutation && user && permission) { + return store.dispatch('registerPushNotifications') + } + + const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted' + + if (isPermMutation && user && vapidPublicKey) { + return store.dispatch('registerPushNotifications') + } + }) +} + createPersistedState(persistedStateOptions).then((persistedState) => { const store = new Vuex.Store({ modules: { @@ -62,10 +88,10 @@ createPersistedState(persistedStateOptions).then((persistedState) => { chat: chatModule, oauth: oauthModule }, - plugins: [persistedState], + plugins: [persistedState, registerPushNotifications], strict: false // Socket modifies itself, let's ignore this for now. // strict: process.env.NODE_ENV !== 'production' }) - afterStoreSetup({store, i18n}) + afterStoreSetup({ store, i18n }) }) |
