···
import { useHandshakes } from "@/providers/authed/HandshakesProvider";
import { useQueries } from "@tanstack/react-query";
import type { ReactNode } from "react";
9
-
import { createContext, useContext } from "react";
9
+
import { createContext, useContext, useEffect, useState } from "react";
type SessionsMap = Map<LatticeSessionInfo, WebSocket>;
···
return await endpointQueryFn(handshake);
staleTime: DEFAULT_STALE_TIME,
···
handshakesInitialising || endpointQueries.some((q) => q.isLoading);
const error = endpointQueries.find((q) => q.error)?.error ?? null;
56
-
const sessionsMap = new Map<LatticeSessionInfo, WebSocket>();
57
+
const [sessionsMap] = useState<Map<LatticeSessionInfo, WebSocket>>(
58
+
new Map<LatticeSessionInfo, WebSocket>(),
60
+
console.log(sessionsMap);
58
-
endpointQueries.forEach((q) => {
59
-
const endpoint = q.data;
60
-
if (!endpoint) return;
61
-
const { sessionInfo, shardUrl } = endpoint;
62
-
const websocket = connectToLattice({
64
-
sessionToken: sessionInfo.token,
63
+
endpointQueries.forEach((q) => {
64
+
const endpoint = q.data;
65
+
if (!endpoint) return;
66
+
const { sessionInfo, shardUrl } = endpoint;
67
+
const existingWs = sessionsMap.get(sessionInfo);
68
+
if (existingWs) return;
70
+
"Initiating lattice connection to",
72
+
"with sessionToken",
75
+
const websocket = connectToLattice({
77
+
sessionToken: sessionInfo.token,
79
+
sessionsMap.set(sessionInfo, websocket);
66
-
sessionsMap.set(sessionInfo, websocket);
81
+
}, [sessionsMap, endpointQueries]);
const value: SessionsContextValue = {