diff options
| author | Egor Kislitsyn <egor@kislitsyn.com> | 2018-12-13 18:04:09 +0700 |
|---|---|---|
| committer | Egor Kislitsyn <egor@kislitsyn.com> | 2018-12-13 18:04:09 +0700 |
| commit | b3455649c53034e01725977260e69cff59c47e87 (patch) | |
| tree | 88e7209fedb48941f1b2763f36ff0b7362e4efa6 /src/modules | |
| parent | 02c0e15781fa0a499c736e710755e799bfaec77d (diff) | |
improve notification subscription
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/interface.js | 11 | ||||
| -rw-r--r-- | src/modules/users.js | 11 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/modules/interface.js b/src/modules/interface.js index 07489685..5abc2c81 100644 --- a/src/modules/interface.js +++ b/src/modules/interface.js @@ -3,7 +3,8 @@ import { set, delete as del } from 'vue' const defaultState = { settings: { currentSaveStateNotice: null, - noticeClearTimeout: null + noticeClearTimeout: null, + notificationPermission: null } } @@ -17,10 +18,13 @@ const interfaceMod = { } set(state.settings, 'currentSaveStateNotice', { error: false, data: success }) set(state.settings, 'noticeClearTimeout', - setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000)) + setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000)) } else { set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error }) } + }, + setNotificationPermission (state, permission) { + state.notificationPermission = permission } }, actions: { @@ -29,6 +33,9 @@ const interfaceMod = { }, settingsSaved ({ commit, dispatch }, { success, error }) { commit('settingsSaved', { success, error }) + }, + setNotificationPermission ({ commit }, permission) { + commit('setNotificationPermission', permission) } } } diff --git a/src/modules/users.js b/src/modules/users.js index 5e0c087d..e4fa472d 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -19,6 +19,14 @@ export const mergeOrAdd = (arr, obj, item) => { } } +const getNotificationPermission = () => { + const Notification = window.Notification + + if (!Notification) return Promise.resolve(null) + if (Notification.permission === 'default') return Notification.requestPermission() + return Promise.resolve(Notification.permission) +} + export const mutations = { setMuted (state, { user: {id}, muted }) { const user = state.usersObject[id] @@ -108,6 +116,9 @@ const users = { commit('setCurrentUser', user) commit('addNewUsers', [user]) + getNotificationPermission() + .then(permission => commit('setNotificationPermission', permission)) + // Set our new backend interactor commit('setBackendInteractor', backendInteractorService(accessToken)) |
