dispatch(fetchAccountTimelineRequest(id, skipLoading));
api(getState).get(`/api/v1/accounts/${id}/statuses`, { params }).then(response => {
- dispatch(fetchAccountTimelineSuccess(id, response.data, replace, skipLoading));
+ const next = getLinks(response).refs.find(link => link.rel === 'next');
+ dispatch(fetchAccountTimelineSuccess(id, response.data, replace, skipLoading, next));
}).catch(error => {
dispatch(fetchAccountTimelineFail(id, error, skipLoading));
});
dispatch(fetchAccountMediaTimelineRequest(id, skipLoading));
api(getState).get(`/api/v1/accounts/${id}/statuses`, { params }).then(response => {
- dispatch(fetchAccountMediaTimelineSuccess(id, response.data, replace, skipLoading));
+ const next = getLinks(response).refs.find(link => link.rel === 'next');
+ dispatch(fetchAccountMediaTimelineSuccess(id, response.data, replace, skipLoading, next));
}).catch(error => {
dispatch(fetchAccountMediaTimelineFail(id, error, skipLoading));
});
};
};
-export function fetchAccountTimelineSuccess(id, statuses, replace, skipLoading) {
+export function fetchAccountTimelineSuccess(id, statuses, replace, skipLoading, next) {
return {
type: ACCOUNT_TIMELINE_FETCH_SUCCESS,
id,
statuses,
replace,
skipLoading,
+ next,
};
};
};
};
-export function fetchAccountMediaTimelineSuccess(id, statuses, replace, skipLoading) {
+export function fetchAccountMediaTimelineSuccess(id, statuses, replace, skipLoading, next) {
return {
type: ACCOUNT_MEDIA_TIMELINE_FETCH_SUCCESS,
id,
statuses,
replace,
skipLoading,
+ next,
};
};
return state.updateIn([timeline, 'items'], Immutable.List(), list => list.concat(moreIds));
};
-const normalizeAccountTimeline = (state, accountId, statuses, replace = false) => {
+const normalizeAccountTimeline = (state, accountId, statuses, replace, next) => {
let ids = Immutable.List();
statuses.forEach((status, i) => {
return state.updateIn(['accounts_timelines', accountId], Immutable.Map(), map => map
.set('isLoading', false)
.set('loaded', true)
- .set('next', true)
+ .set('next', next)
.update('items', Immutable.List(), list => (replace ? ids : ids.concat(list))));
};
-const normalizeAccountMediaTimeline = (state, accountId, statuses) => {
+const normalizeAccountMediaTimeline = (state, accountId, statuses, replace, next) => {
let ids = Immutable.List();
statuses.forEach((status, i) => {
return state.updateIn(['accounts_media_timelines', accountId], Immutable.Map(), map => map
.set('isLoading', false)
- .set('next', true)
- .update('items', Immutable.List(), list => ids.concat(list)));
+ .set('next', next)
+ .update('items', Immutable.List(), list => (replace ? ids : ids.concat(list))));
};
const appendNormalizedAccountTimeline = (state, accountId, statuses, next) => {
case ACCOUNT_TIMELINE_EXPAND_FAIL:
return state.updateIn(['accounts_timelines', action.id], Immutable.Map(), map => map.set('isLoading', false));
case ACCOUNT_TIMELINE_FETCH_SUCCESS:
- return normalizeAccountTimeline(state, action.id, Immutable.fromJS(action.statuses), action.replace);
+ return normalizeAccountTimeline(state, action.id, Immutable.fromJS(action.statuses), action.replace, action.next);
case ACCOUNT_TIMELINE_EXPAND_SUCCESS:
return appendNormalizedAccountTimeline(state, action.id, Immutable.fromJS(action.statuses), action.next);
case ACCOUNT_MEDIA_TIMELINE_FETCH_REQUEST:
case ACCOUNT_MEDIA_TIMELINE_EXPAND_FAIL:
return state.updateIn(['accounts_media_timelines', action.id], Immutable.Map(), map => map.set('isLoading', false));
case ACCOUNT_MEDIA_TIMELINE_FETCH_SUCCESS:
- return normalizeAccountMediaTimeline(state, action.id, Immutable.fromJS(action.statuses));
+ return normalizeAccountMediaTimeline(state, action.id, Immutable.fromJS(action.statuses), action.replace, action.next);
case ACCOUNT_MEDIA_TIMELINE_EXPAND_SUCCESS:
return appendNormalizedAccountMediaTimeline(state, action.id, Immutable.fromJS(action.statuses), action.next);
case ACCOUNT_BLOCK_SUCCESS: