From 9e78c64d5eecb5f73e4da401dd3baec94e77efd7 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 20 Aug 2018 19:58:49 +0300 Subject: [PATCH] Hide initial desktop notifications spam when FE is opened and there's a lot of unseen notifications. --- src/modules/statuses.js | 9 ++++++++- .../notifications_fetcher.service.js | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 1e1bf72f..063f5f9c 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -24,6 +24,7 @@ export const defaultState = { allStatusesObject: {}, maxId: 0, notifications: { + desktopNotificationSilence: true, maxId: 0, maxSavedId: 0, minId: Number.POSITIVE_INFINITY, @@ -314,7 +315,7 @@ const addNewNotifications = (state, { dispatch, notifications, older }) => { result.image = action.attachments[0].url } - if (fresh) { + if (fresh && !state.notifications.desktopNotificationSilence) { let notification = new window.Notification(title, result) // Chrome is known for not closing notifications automatically // according to MDN, anyway. @@ -365,6 +366,9 @@ export const mutations = { setNotificationsError (state, { value }) { state.notificationsError = value }, + setNotificationsSilence (state, { value }) { + state.notifications.desktopNotificationSilence = value + }, setProfileView (state, { v }) { // load followers / friends only when needed state.timelines['user'].viewing = v @@ -401,6 +405,9 @@ const statuses = { setNotificationsError ({ rootState, commit }, { value }) { commit('setNotificationsError', { value }) }, + setNotificationsSilence ({ rootState, commit }, { value }) { + commit('setNotificationsSilence', { value }) + }, addFriends ({ rootState, commit }, { friends }) { commit('addFriends', { friends }) }, diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js index 5aedc4fb..74a4bcda 100644 --- a/src/services/notifications_fetcher/notifications_fetcher.service.js +++ b/src/services/notifications_fetcher/notifications_fetcher.service.js @@ -30,6 +30,10 @@ const fetchAndUpdate = ({store, credentials, older = false}) => { const startFetching = ({credentials, store}) => { fetchAndUpdate({ credentials, store }) const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store }) + // Initially there's set flag to silence all desktop notifications so + // that there won't spam of them when user just opened up the FE we + // reset that flag after a while to show new notifications once again. + setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000) return setInterval(boundFetchAndUpdate, 10000) }