Added debouncing to markReadNotifications and fetchComments

• Added:
- debouncing to markReadNotifications and fetchComments
This commit is contained in:
mgabdev 2021-01-09 01:50:18 -05:00
parent 1da4cb9f0f
commit 8c7a52065c
2 changed files with 20 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import api, { getLinks } from '../api'
import debounce from 'lodash.debounce'
import IntlMessageFormat from 'intl-messageformat'
import noop from 'lodash.noop'
import { fetchRelationships } from './accounts'
@ -262,9 +263,14 @@ export const setFilter = (path, value) => (dispatch) => {
/**
*
*/
export const markReadNotifications = () => (dispatch, getState) => {
if (!me) return
debouncedMarkReadNotifications(dispatch, getState)
}
export const debouncedMarkReadNotifications = debounce((dispatch, getState) => {
if (!me) return
const topNotification = parseInt(getState().getIn(['notifications', 'items', 0, 'id']))
const lastReadId = getState().getIn(['notifications', 'lastReadId'])
@ -278,4 +284,4 @@ export const markReadNotifications = () => (dispatch, getState) => {
})
})
}
}
}, 5000, { leading: true })

View File

@ -1,3 +1,4 @@
import debounce from 'lodash.debounce'
import api from '../api'
import openDB from '../storage/db'
import { evictStatus } from '../storage/modifier'
@ -141,7 +142,7 @@ export const editStatus = (status) => (dispatch) => {
*
*/
export const deleteStatus = (id, routerHistory) => (dispatch, getState) => {
if (!me) return
if (!me || !id) return
let status = getState().getIn(['statuses', id])
@ -180,6 +181,8 @@ const deleteStatusFail = (id, error) => ({
*
*/
export const fetchContext = (id, ensureIsReply) => (dispatch, getState) => {
if (!id) return
if (ensureIsReply) {
const isReply = !!getState().getIn(['statuses', id, 'in_reply_to_id'], null)
if (!isReply) return
@ -225,6 +228,12 @@ const fetchContextFail = (id, error) => ({
*
*/
export const fetchComments = (id) => (dispatch, getState) => {
if (!id) return
debouncedFetchComments(id, dispatch, getState)
}
export const debouncedFetchComments = debounce((id, dispatch, getState) => {
if (!id) return
dispatch(fetchCommentsRequest(id))
api(getState).get(`/api/v1/statuses/${id}/comments`).then((response) => {
@ -237,7 +246,8 @@ export const fetchComments = (id) => (dispatch, getState) => {
dispatch(fetchCommentsFail(id, error))
})
}
}, 5000, { leading: true })
const fetchCommentsRequest = (id) => ({
type: COMMENTS_FETCH_REQUEST,