0
0
Fork 0

Fix #3665 - Refactor timelines reducer (#3686)

* Move ancestors/descendants out of timelines reducer

* Refactor timelines reducer

All types of timelines now have a flat structure and use the same
reducer functions and actions

* Reintroduce some missing behaviours

* Fix wrong import in reports

* Fix includes typo

* Fix issue related to "next" pagination in timelines and notifications

* Fix bug with timeline's initial state, expandNotifications
This commit is contained in:
Eugen Rochko 2017-06-11 17:07:35 +02:00 committed by GitHub
parent 85d405c810
commit 47bf7a8047
21 changed files with 216 additions and 593 deletions

View file

@ -124,25 +124,22 @@ export function refreshNotificationsFail(error, skipLoading) {
export function expandNotifications() {
return (dispatch, getState) => {
const url = getState().getIn(['notifications', 'next'], null);
const lastId = getState().getIn(['notifications', 'items']).last();
const items = getState().getIn(['notifications', 'items'], Immutable.List());
if (url === null || getState().getIn(['notifications', 'isLoading'])) {
if (getState().getIn(['notifications', 'isLoading']) || items.size === 0) {
return;
}
dispatch(expandNotificationsRequest());
const params = {
max_id: lastId,
max_id: items.last().get('id'),
limit: 20,
exclude_types: excludeTypesFromSettings(getState()),
};
params.exclude_types = excludeTypesFromSettings(getState());
dispatch(expandNotificationsRequest());
api(getState).get(url, params).then(response => {
api(getState).get('/api/v1/notifications', { params }).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next');
dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null));
fetchRelatedRelationships(dispatch, response.data);
}).catch(error => {