frontend client for gemstone. decentralised workplace app
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: wrap in hooks to prevent retrying connections at the start

serenity 1f0b7387 4d21ceaf

+25 -11
+25 -11
src/providers/authed/SessionsProvider.tsx
··· 6 6 import { useHandshakes } from "@/providers/authed/HandshakesProvider"; 7 7 import { useQueries } from "@tanstack/react-query"; 8 8 import type { ReactNode } from "react"; 9 - import { createContext, useContext } from "react"; 9 + import { createContext, useContext, useEffect, useState } from "react"; 10 10 11 11 type SessionsMap = Map<LatticeSessionInfo, WebSocket>; 12 12 ··· 46 46 return await endpointQueryFn(handshake); 47 47 }, 48 48 staleTime: DEFAULT_STALE_TIME, 49 + retries: false, 49 50 })), 50 51 }); 51 52 ··· 53 54 handshakesInitialising || endpointQueries.some((q) => q.isLoading); 54 55 const error = endpointQueries.find((q) => q.error)?.error ?? null; 55 56 56 - const sessionsMap = new Map<LatticeSessionInfo, WebSocket>(); 57 + const [sessionsMap] = useState<Map<LatticeSessionInfo, WebSocket>>( 58 + new Map<LatticeSessionInfo, WebSocket>(), 59 + ); 60 + console.log(sessionsMap); 57 61 58 - endpointQueries.forEach((q) => { 59 - const endpoint = q.data; 60 - if (!endpoint) return; 61 - const { sessionInfo, shardUrl } = endpoint; 62 - const websocket = connectToLattice({ 63 - shardUrl, 64 - sessionToken: sessionInfo.token, 62 + useEffect(() => { 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; 69 + console.log( 70 + "Initiating lattice connection to", 71 + shardUrl, 72 + "with sessionToken", 73 + sessionInfo.token, 74 + ); 75 + const websocket = connectToLattice({ 76 + shardUrl, 77 + sessionToken: sessionInfo.token, 78 + }); 79 + sessionsMap.set(sessionInfo, websocket); 65 80 }); 66 - sessionsMap.set(sessionInfo, websocket); 67 - }); 81 + }, [sessionsMap, endpointQueries]); 68 82 69 83 const value: SessionsContextValue = { 70 84 sessionsMap,