max_id: lastId
}
}).then(response => {
- dispatch(expandAccountTimelineSuccess(id, response.data));
+ const next = getLinks(response).refs.find(link => link.rel === 'next');
+ dispatch(expandAccountTimelineSuccess(id, response.data, next));
}).catch(error => {
dispatch(expandAccountTimelineFail(id, error));
});
};
};
-export function expandAccountTimelineSuccess(id, statuses) {
+export function expandAccountTimelineSuccess(id, statuses, next) {
return {
type: ACCOUNT_TIMELINE_EXPAND_SUCCESS,
id,
- statuses
+ statuses,
+ next
};
};
return state.updateIn(['accounts_timelines', accountId], Immutable.Map(), map => map
.set('isLoading', false)
.set('loaded', true)
+ .set('next', true)
.update('items', Immutable.List(), list => (replace ? ids : list.unshift(...ids))));
};
-const appendNormalizedAccountTimeline = (state, accountId, statuses) => {
+const appendNormalizedAccountTimeline = (state, accountId, statuses, next) => {
let moreIds = Immutable.List([]);
statuses.forEach((status, i) => {
return state.updateIn(['accounts_timelines', accountId], Immutable.Map(), map => map
.set('isLoading', false)
+ .set('next', next)
.update('items', list => list.push(...moreIds)));
};
case ACCOUNT_TIMELINE_FETCH_SUCCESS:
return normalizeAccountTimeline(state, action.id, Immutable.fromJS(action.statuses), action.replace);
case ACCOUNT_TIMELINE_EXPAND_SUCCESS:
- return appendNormalizedAccountTimeline(state, action.id, Immutable.fromJS(action.statuses));
+ return appendNormalizedAccountTimeline(state, action.id, Immutable.fromJS(action.statuses), action.next);
case ACCOUNT_BLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS:
return filterTimelines(state, action.relationship, action.statuses);