diff --git a/lib/keyserver-conn/call-keyserver-endpoint-provider.react.js b/lib/keyserver-conn/call-keyserver-endpoint-provider.react.js --- a/lib/keyserver-conn/call-keyserver-endpoint-provider.react.js +++ b/lib/keyserver-conn/call-keyserver-endpoint-provider.react.js @@ -229,7 +229,7 @@ sessionID, isSocketConnected, lastCommunicatedPlatformDetails, - socketAPIHandler, + socketAPIHandlers[keyserverID], endpoint, data, dispatch, @@ -443,9 +443,12 @@ return callKeyserverEndpointContext; } -let socketAPIHandler: ?SocketAPIHandler = null; -function registerActiveSocket(passedSocketAPIHandler: ?SocketAPIHandler) { - socketAPIHandler = passedSocketAPIHandler; +const socketAPIHandlers: { [keyserverID: string]: ?SocketAPIHandler } = {}; +function registerActiveSocket( + keyserverID: string, + socketAPIHandler: ?SocketAPIHandler, +) { + socketAPIHandlers[keyserverID] = socketAPIHandler; } export { diff --git a/lib/socket/api-request-handler.react.js b/lib/socket/api-request-handler.react.js --- a/lib/socket/api-request-handler.react.js +++ b/lib/socket/api-request-handler.react.js @@ -6,7 +6,7 @@ import { InflightRequests } from './inflight-requests.js'; import { registerActiveSocket } from '../keyserver-conn/call-keyserver-endpoint-provider.react.js'; import { connectionSelector } from '../selectors/keyserver-selectors.js'; -import type { APIRequest } from '../types/endpoints.js'; +import type { APIRequest, SocketAPIHandler } from '../types/endpoints.js'; import { clientSocketMessageTypes, serverSocketMessageTypes, @@ -16,11 +16,11 @@ } from '../types/socket-types.js'; import { SocketOffline } from '../utils/errors.js'; import { useSelector } from '../utils/redux-utils.js'; -import { ashoatKeyserverID } from '../utils/validation-utils.js'; type BaseProps = { +inflightRequests: ?InflightRequests, +sendMessage: (message: ClientSocketMessageWithoutID) => number, + +keyserverID: string, }; type Props = { ...BaseProps, @@ -49,25 +49,31 @@ ); } - get registeredResponseFetcher(): ?(request: APIRequest) => Promise { + get registeredResponseFetcher(): ?SocketAPIHandler { return APIRequestHandler.isConnected(this.props) ? this.fetchResponse : null; } componentDidMount() { - registerActiveSocket(this.registeredResponseFetcher); + registerActiveSocket( + this.props.keyserverID, + this.registeredResponseFetcher, + ); } componentWillUnmount() { - registerActiveSocket(null); + registerActiveSocket(this.props.keyserverID, null); } componentDidUpdate(prevProps: Props) { const isConnected = APIRequestHandler.isConnected(this.props); const wasConnected = APIRequestHandler.isConnected(prevProps); if (isConnected !== wasConnected) { - registerActiveSocket(this.registeredResponseFetcher); + registerActiveSocket( + this.props.keyserverID, + this.registeredResponseFetcher, + ); } } @@ -96,7 +102,7 @@ const ConnectedAPIRequestHandler: React.ComponentType = React.memo(function ConnectedAPIRequestHandler(props) { - const connection = useSelector(connectionSelector(ashoatKeyserverID)); + const connection = useSelector(connectionSelector(props.keyserverID)); invariant(connection, 'keyserver missing from keyserverStore'); return ; }); diff --git a/lib/socket/socket.react.js b/lib/socket/socket.react.js --- a/lib/socket/socket.react.js +++ b/lib/socket/socket.react.js @@ -344,6 +344,7 @@