[Glitch] Fix potentially missing statuses when reconnecting to websocket
Port ebe01ea194
to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
pull/1737/head
parent
ff73d43b35
commit
43aff90d0e
|
@ -199,6 +199,7 @@ export function connectTimeline(timeline) {
|
||||||
return {
|
return {
|
||||||
type: TIMELINE_CONNECT,
|
type: TIMELINE_CONNECT,
|
||||||
timeline,
|
timeline,
|
||||||
|
usePendingItems: preferPendingItems,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,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) {
|
export default function timelines(state = initialState, action) {
|
||||||
switch(action.type) {
|
switch(action.type) {
|
||||||
case TIMELINE_LOAD_PENDING:
|
case TIMELINE_LOAD_PENDING:
|
||||||
|
@ -202,7 +213,7 @@ export default function timelines(state = initialState, action) {
|
||||||
case TIMELINE_SCROLL_TOP:
|
case TIMELINE_SCROLL_TOP:
|
||||||
return updateTop(state, action.timeline, action.top);
|
return updateTop(state, action.timeline, action.top);
|
||||||
case TIMELINE_CONNECT:
|
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:
|
case TIMELINE_DISCONNECT:
|
||||||
return state.update(
|
return state.update(
|
||||||
action.timeline,
|
action.timeline,
|
||||||
|
|
Loading…
Reference in New Issue