Fix not being able to load more notifications after trimming (#31652)
This commit is contained in:
parent
491033c86c
commit
c1795ee963
@ -248,8 +248,9 @@ function processNewNotification(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function trimNotifications(state: NotificationGroupsState) {
|
function trimNotifications(state: NotificationGroupsState) {
|
||||||
if (state.scrolledToTop) {
|
if (state.scrolledToTop && state.groups.length > NOTIFICATIONS_TRIM_LIMIT) {
|
||||||
state.groups.splice(NOTIFICATIONS_TRIM_LIMIT);
|
state.groups.splice(NOTIFICATIONS_TRIM_LIMIT);
|
||||||
|
ensureTrailingGap(state.groups);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,6 +401,28 @@ function ensureLeadingGap(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the groups list ends with a gap suitable for loading more, mutating it to append one if needed
|
||||||
|
function ensureTrailingGap(
|
||||||
|
groups: NotificationGroupsState['groups'],
|
||||||
|
): NotificationGap {
|
||||||
|
const groupOrGap = groups.at(-1);
|
||||||
|
|
||||||
|
if (groupOrGap?.type === 'gap') {
|
||||||
|
// We're expecting older notifications, so discard sinceId if it's set
|
||||||
|
groupOrGap.sinceId = undefined;
|
||||||
|
|
||||||
|
return groupOrGap;
|
||||||
|
} else {
|
||||||
|
const gap: NotificationGap = {
|
||||||
|
type: 'gap',
|
||||||
|
maxId: groupOrGap?.page_min_id,
|
||||||
|
};
|
||||||
|
|
||||||
|
groups.push(gap);
|
||||||
|
return gap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const notificationGroupsReducer = createReducer<NotificationGroupsState>(
|
export const notificationGroupsReducer = createReducer<NotificationGroupsState>(
|
||||||
initialState,
|
initialState,
|
||||||
(builder) => {
|
(builder) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user