Fix “load more” adding older toots/notifications to pending items (#11883)
This commit is contained in:
		| @@ -151,7 +151,7 @@ export function expandNotifications({ maxId } = {}, done = noOp) { | ||||
|       dispatch(importFetchedAccounts(response.data.map(item => item.account))); | ||||
|       dispatch(importFetchedStatuses(response.data.map(item => item.status).filter(status => !!status))); | ||||
|  | ||||
|       dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent && preferPendingItems)); | ||||
|       dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent, isLoadingRecent && preferPendingItems)); | ||||
|       fetchRelatedRelationships(dispatch, response.data); | ||||
|       done(); | ||||
|     }).catch(error => { | ||||
| @@ -168,11 +168,12 @@ export function expandNotificationsRequest(isLoadingMore) { | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| export function expandNotificationsSuccess(notifications, next, isLoadingMore, usePendingItems) { | ||||
| export function expandNotificationsSuccess(notifications, next, isLoadingMore, isLoadingRecent, usePendingItems) { | ||||
|   return { | ||||
|     type: NOTIFICATIONS_EXPAND_SUCCESS, | ||||
|     notifications, | ||||
|     next, | ||||
|     isLoadingRecent: isLoadingRecent, | ||||
|     usePendingItems, | ||||
|     skipLoading: !isLoadingMore, | ||||
|   }; | ||||
|   | ||||
| @@ -54,7 +54,7 @@ const normalizeNotification = (state, notification, usePendingItems) => { | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| const expandNormalizedNotifications = (state, notifications, next, usePendingItems) => { | ||||
| const expandNormalizedNotifications = (state, notifications, next, isLoadingRecent, usePendingItems) => { | ||||
|   let items = ImmutableList(); | ||||
|  | ||||
|   notifications.forEach((n, i) => { | ||||
| @@ -63,7 +63,7 @@ const expandNormalizedNotifications = (state, notifications, next, usePendingIte | ||||
|  | ||||
|   return state.withMutations(mutable => { | ||||
|     if (!items.isEmpty()) { | ||||
|       usePendingItems = usePendingItems || !mutable.get('top') || !mutable.get('pendingItems').isEmpty(); | ||||
|       usePendingItems = isLoadingRecent && (usePendingItems || !mutable.get('top') || !mutable.get('pendingItems').isEmpty()); | ||||
|  | ||||
|       mutable.update(usePendingItems ? 'pendingItems' : 'items', list => { | ||||
|         const lastIndex = 1 + list.findLastIndex( | ||||
| @@ -119,7 +119,7 @@ export default function notifications(state = initialState, action) { | ||||
|   case NOTIFICATIONS_UPDATE: | ||||
|     return normalizeNotification(state, action.notification, action.usePendingItems); | ||||
|   case NOTIFICATIONS_EXPAND_SUCCESS: | ||||
|     return expandNormalizedNotifications(state, action.notifications, action.next, action.usePendingItems); | ||||
|     return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingRecent, action.usePendingItems); | ||||
|   case ACCOUNT_BLOCK_SUCCESS: | ||||
|     return filterNotifications(state, [action.relationship.id]); | ||||
|   case ACCOUNT_MUTE_SUCCESS: | ||||
|   | ||||
| @@ -40,7 +40,7 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is | ||||
|     if (timeline.endsWith(':pinned')) { | ||||
|       mMap.set('items', statuses.map(status => status.get('id'))); | ||||
|     } else if (!statuses.isEmpty()) { | ||||
|       usePendingItems = usePendingItems || !mMap.get('top') || !mMap.get('pendingItems').isEmpty(); | ||||
|       usePendingItems = isLoadingRecent && (usePendingItems || !mMap.get('top') || !mMap.get('pendingItems').isEmpty()); | ||||
|       mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => { | ||||
|         const newIds = statuses.map(status => status.get('id')); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user