Fix infinite scrolling breaking after navigation
This commit is contained in:
		@@ -70,13 +70,13 @@ export function refreshTimeline(timeline, id = null) {
 | 
			
		||||
 | 
			
		||||
    const ids      = getState().getIn(['timelines', timeline, 'items'], Immutable.List());
 | 
			
		||||
    const newestId = ids.size > 0 ? ids.first() : null;
 | 
			
		||||
    const params   = getState().getIn(['timelines', timeline, 'params'], {});
 | 
			
		||||
    let params     = getState().getIn(['timelines', timeline, 'params'], {});
 | 
			
		||||
    const path     = getState().getIn(['timelines', timeline, 'path'])(id);
 | 
			
		||||
 | 
			
		||||
    let skipLoading = false;
 | 
			
		||||
 | 
			
		||||
    if (newestId !== null && getState().getIn(['timelines', timeline, 'loaded']) && (id === null || getState().getIn(['timelines', timeline, 'id']) === id)) {
 | 
			
		||||
      params.since_id = newestId;
 | 
			
		||||
      params          = { ...params, since_id: newestId };
 | 
			
		||||
      skipLoading     = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,9 +37,12 @@ const normalizeNotifications = (state, notifications, next) => {
 | 
			
		||||
    items = items.set(i, notificationToMap(n));
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  if (state.get('next') === null) {
 | 
			
		||||
    state = state.set('next', next);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return state
 | 
			
		||||
    .update('items', list => loaded ? list.unshift(...items) : list.push(...items))
 | 
			
		||||
    .set('next', next)
 | 
			
		||||
    .set('loaded', true)
 | 
			
		||||
    .set('isLoading', false);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -101,7 +101,10 @@ const normalizeTimeline = (state, timeline, statuses, next) => {
 | 
			
		||||
 | 
			
		||||
  state = state.setIn([timeline, 'loaded'], true);
 | 
			
		||||
  state = state.setIn([timeline, 'isLoading'], false);
 | 
			
		||||
  state = state.setIn([timeline, 'next'], next);
 | 
			
		||||
 | 
			
		||||
  if (state.getIn([timeline, 'next']) === null) {
 | 
			
		||||
    state = state.setIn([timeline, 'next'], next);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return state.updateIn([timeline, 'items'], Immutable.List(), list => (loaded ? list.unshift(...ids) : ids));
 | 
			
		||||
};
 | 
			
		||||
@@ -237,6 +240,7 @@ const resetTimeline = (state, timeline, id) => {
 | 
			
		||||
        .set('id', id)
 | 
			
		||||
        .set('isLoading', true)
 | 
			
		||||
        .set('loaded', false)
 | 
			
		||||
        .set('next', null)
 | 
			
		||||
        .update('items', list => list.clear()));
 | 
			
		||||
  } else {
 | 
			
		||||
    state = state.setIn([timeline, 'isLoading'], true);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user