Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions reflex/.templates/web/utils/state.js
Original file line number Diff line number Diff line change
Expand Up @@ -352,8 +352,13 @@ export const applyRestEvent = async (event, socket) => {
* Queue events to be processed and trigger processing of queue.
* @param events Array of events to queue.
* @param socket The socket object to send the event on.
* @param prepend Whether to place the events at the beginning of the queue.
*/
export const queueEvents = async (events, socket) => {
export const queueEvents = async (events, socket, prepend) => {
if (prepend) {
// Drain the existing queue and place it after the given events.
events = [...events, ...Array.from({length: event_queue.length}).map(() => event_queue.shift())];
}
event_queue.push(...events);
await processEvent(socket.current);
};
Expand Down Expand Up @@ -477,7 +482,7 @@ export const connect = async (
});
socket.current.on("reload", async (event) => {
event_processing = false;
queueEvents([...initialEvents(), event], socket);
queueEvents([...initialEvents(), event], socket, true);
});

document.addEventListener("visibilitychange", checkVisibility);
Expand Down Expand Up @@ -773,16 +778,17 @@ export const useEventLoop = (
const sentHydrate = useRef(false); // Avoid double-hydrate due to React strict-mode
useEffect(() => {
if (router.isReady && !sentHydrate.current) {
const events = initial_events();
addEvents(
events.map((e) => ({
queueEvents(
initial_events().map((e) => ({
...e,
router_data: (({ pathname, query, asPath }) => ({
pathname,
query,
asPath,
}))(router),
}))
})),
socket,
true,
);
sentHydrate.current = true;
}
Expand Down