Skip to content
Snippets Groups Projects
Commit 2d914c33 authored by Shpuld Shpludson's avatar Shpuld Shpludson
Browse files

replace setInterval for timelne, notifications and follow requests

parent acc45b49
No related branches found
No related tags found
2 merge requests!1278Merge develop into master for 2.2.0,!1222Fix/wait for request before starting interval - fix #937
......@@ -20,7 +20,7 @@ const api = {
state.fetchers[fetcherName] = fetcher
},
removeFetcher (state, { fetcherName, fetcher }) {
window.clearInterval(fetcher)
state.fetchers[fetcherName]()
delete state.fetchers[fetcherName]
},
setWsToken (state, token) {
......
export const makeFetcher = (call, interval) => {
let stopped = false
let timeout = null
let func = () => {}
func = () => {
call().finally(() => {
console.log('callbacks')
if (stopped) return
timeout = window.setTimeout(func, interval)
})
}
const stopFetcher = () => {
stopped = true
window.cancelTimeout(timeout)
}
func()
return stopFetcher
}
import apiService from '../api/api.service.js'
import { makeFetcher } from '../fetcher/fetcher.js'
const fetchAndUpdate = ({ store, credentials }) => {
return apiService.fetchFollowRequests({ credentials })
......@@ -10,9 +11,8 @@ const fetchAndUpdate = ({ store, credentials }) => {
}
const startFetching = ({ credentials, store }) => {
fetchAndUpdate({ credentials, store })
const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })
return setInterval(boundFetchAndUpdate, 10000)
return makeFetcher(boundFetchAndUpdate, 10000)
}
const followRequestFetcher = {
......
import apiService from '../api/api.service.js'
import makeFetcher from '../fetcher/fetcher.js'
const update = ({ store, notifications, older }) => {
store.dispatch('setNotificationsError', { value: false })
......@@ -39,6 +40,7 @@ const fetchAndUpdate = ({ store, credentials, older = false }) => {
args['since'] = Math.max(...readNotifsIds)
fetchNotifications({ store, args, older })
}
return result
}
}
......@@ -53,13 +55,12 @@ const fetchNotifications = ({ store, args, older }) => {
}
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)
const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store, refetch: true })
return makeFetcher(boundFetchAndUpdate, 10000)
}
const notificationsFetcher = {
......
import { camelCase } from 'lodash'
import apiService from '../api/api.service.js'
import { makeFetcher } from '../fetcher/fetcher.js'
const update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {
const ccTimeline = camelCase(timeline)
......@@ -70,9 +71,9 @@ const startFetching = ({ timeline = 'friends', credentials, store, userId = fals
const timelineData = rootState.statuses.timelines[camelCase(timeline)]
const showImmediately = timelineData.visibleStatuses.length === 0
timelineData.userId = userId
fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })
const boundFetchAndUpdate = () => fetchAndUpdate({ timeline, credentials, store, userId, tag })
return setInterval(boundFetchAndUpdate, 10000)
const boundFetchAndUpdate = () =>
fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })
return makeFetcher(boundFetchAndUpdate, 10000)
}
const timelineFetcher = {
fetchAndUpdate,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment