Browse Source

Fix potentially missing statuses when reconnecting to websocket (#17981)

* Fix potentially missing statuses when reconnecting to websocket

* Add gap on reconnect rather than maintaining it constantly
closed-social-glitch-2
Claire 2 years ago
committed by GitHub
parent
commit
ebe01ea194
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions
  1. +1
    -0
      app/javascript/mastodon/actions/timelines.js
  2. +12
    -1
      app/javascript/mastodon/reducers/timelines.js

+ 1
- 0
app/javascript/mastodon/actions/timelines.js View File

@ -184,6 +184,7 @@ export function connectTimeline(timeline) {
return {
type: TIMELINE_CONNECT,
timeline,
usePendingItems: preferPendingItems,
};
};

+ 12
- 1
app/javascript/mastodon/reducers/timelines.js View File

@ -171,6 +171,17 @@ const updateTop = (state, timeline, top) => {
}));
};
const reconnectTimeline = (state, usePendingItems) => {
if (state.get('online')) {
return state;
}
return state.withMutations(mMap => {
mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items);
mMap.set('online', true);
});
};
export default function timelines(state = initialState, action) {
switch(action.type) {
case TIMELINE_LOAD_PENDING:
@ -196,7 +207,7 @@ export default function timelines(state = initialState, action) {
case TIMELINE_SCROLL_TOP:
return updateTop(state, action.timeline, action.top);
case TIMELINE_CONNECT:
return state.update(action.timeline, initialTimeline, map => map.set('online', true));
return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems));
case TIMELINE_DISCONNECT:
return state.update(
action.timeline,

Loading…
Cancel
Save