diff --git a/lib/selectors/server-calls.js b/lib/selectors/server-calls.js --- a/lib/selectors/server-calls.js +++ b/lib/selectors/server-calls.js @@ -12,10 +12,7 @@ } from './keyserver-selectors.js'; import type { PlatformDetails } from '../types/device-types.js'; import type { AppState } from '../types/redux-types.js'; -import type { - ConnectionInfo, - ConnectionStatus, -} from '../types/socket-types.js'; +import type { ConnectionInfo } from '../types/socket-types.js'; import { type CurrentUserInfo } from '../types/user-types.js'; export type ServerCallState = { @@ -23,7 +20,7 @@ +urlPrefix: ?string, +sessionID: ?string, +currentUserInfo: ?CurrentUserInfo, - +connectionStatus: ?ConnectionStatus, + +isSocketConnected: ?boolean, +lastCommunicatedPlatformDetails: ?PlatformDetails, }; @@ -49,7 +46,10 @@ urlPrefix, sessionID, currentUserInfo, - connectionStatus: connectionInfo?.status, + isSocketConnected: + connectionInfo?.status !== undefined + ? connectionInfo?.status === 'connected' + : undefined, lastCommunicatedPlatformDetails, }), ); diff --git a/lib/utils/action-utils.js b/lib/utils/action-utils.js --- a/lib/utils/action-utils.js +++ b/lib/utils/action-utils.js @@ -36,7 +36,6 @@ ClientSessionChange, PreRequestUserState, } from '../types/session-types.js'; -import type { ConnectionStatus } from '../types/socket-types.js'; import type { CurrentUserInfo } from '../types/user-types.js'; function extractKeyserverIDFromID(id: string): string { @@ -232,7 +231,7 @@ () => new Promise(r => r(null)), urlPrefix, null, - 'disconnected', + false, null, null, endpoint, @@ -309,7 +308,7 @@ urlPrefix, sessionID, currentUserInfo, - connectionStatus, + isSocketConnected, lastCommunicatedPlatformDetails, keyserverID, } = params; @@ -412,7 +411,7 @@ cookieInvalidationRecovery, urlPrefix, sessionID, - connectionStatus, + isSocketConnected, lastCommunicatedPlatformDetails, socketAPIHandler, endpoint, @@ -432,7 +431,7 @@ +urlPrefix: string, +sessionID: ?string, +currentUserInfo: ?CurrentUserInfo, - +connectionStatus: ConnectionStatus, + +isSocketConnected: boolean, +lastCommunicatedPlatformDetails: ?PlatformDetails, +keyserverID: string, }; @@ -455,7 +454,7 @@ (state: BindServerCallsParams) => state.urlPrefix, (state: BindServerCallsParams) => state.sessionID, (state: BindServerCallsParams) => state.currentUserInfo, - (state: BindServerCallsParams) => state.connectionStatus, + (state: BindServerCallsParams) => state.isSocketConnected, (state: BindServerCallsParams) => state.lastCommunicatedPlatformDetails, (state: BindServerCallsParams) => state.keyserverID, ( @@ -464,7 +463,7 @@ urlPrefix: string, sessionID: ?string, currentUserInfo: ?CurrentUserInfo, - connectionStatus: ConnectionStatus, + isSocketConnected: boolean, lastCommunicatedPlatformDetails: ?PlatformDetails, keyserverID: string, ) => { @@ -474,7 +473,7 @@ urlPrefix, sessionID, currentUserInfo, - connectionStatus, + isSocketConnected, lastCommunicatedPlatformDetails, keyserverID, }); @@ -497,16 +496,18 @@ serverCallStateSelector(ashoatKeyserverID), ); return React.useMemo(() => { - const { urlPrefix, connectionStatus } = serverCallState; + const { urlPrefix, isSocketConnected } = serverCallState; invariant( - !!urlPrefix && !!connectionStatus, + !!urlPrefix && + isSocketConnected !== undefined && + isSocketConnected !== null, 'keyserver missing from keyserverStore', ); return createBoundServerCallsSelector(serverCall)({ ...serverCallState, urlPrefix, - connectionStatus, + isSocketConnected, dispatch, ...paramOverride, keyserverID: ashoatKeyserverID, diff --git a/lib/utils/call-server-endpoint.js b/lib/utils/call-server-endpoint.js --- a/lib/utils/call-server-endpoint.js +++ b/lib/utils/call-server-endpoint.js @@ -26,7 +26,6 @@ ServerSessionChange, ClientSessionChange, } from '../types/session-types.js'; -import type { ConnectionStatus } from '../types/socket-types'; import type { CurrentUserInfo } from '../types/user-types.js'; export type CallServerEndpointOptions = Partial<{ @@ -83,7 +82,7 @@ ) => Promise, urlPrefix: string, sessionID: ?string, - connectionStatus: ConnectionStatus, + isSocketConnected: boolean, lastCommunicatedPlatformDetails: ?PlatformDetails, socketAPIHandler: ?SocketAPIHandler, endpoint: Endpoint, @@ -104,7 +103,7 @@ if ( endpointIsSocketPreferred(endpoint) && - connectionStatus === 'connected' && + isSocketConnected && socketAPIHandler && !options?.urlPrefixOverride ) { diff --git a/lib/utils/keyserver-call.js b/lib/utils/keyserver-call.js --- a/lib/utils/keyserver-call.js +++ b/lib/utils/keyserver-call.js @@ -16,7 +16,6 @@ import type { Endpoint } from '../types/endpoints.js'; import type { KeyserverInfo } from '../types/keyserver-types.js'; import type { Dispatch } from '../types/redux-types.js'; -import type { ConnectionStatus } from '../types/socket-types.js'; import type { CurrentUserInfo } from '../types/user-types.js'; export type CallKeyserverEndpoint = ( @@ -45,7 +44,7 @@ (state: BindServerCallsParams) => state.urlPrefix, (state: BindServerCallsParams) => state.sessionID, (state: BindServerCallsParams) => state.currentUserInfo, - (state: BindServerCallsParams) => state.connectionStatus, + (state: BindServerCallsParams) => state.isSocketConnected, (state: BindServerCallsParams) => state.lastCommunicatedPlatformDetails, ( dispatch: Dispatch, @@ -53,7 +52,7 @@ urlPrefix: string, sessionID: ?string, currentUserInfo: ?CurrentUserInfo, - connectionStatus: ConnectionStatus, + isSocketConnected: boolean, lastCommunicatedPlatformDetails: ?PlatformDetails, ) => bindCookieAndUtilsIntoCallServerEndpoint({ @@ -62,7 +61,7 @@ urlPrefix, sessionID, currentUserInfo, - connectionStatus, + isSocketConnected, lastCommunicatedPlatformDetails, keyserverID, }), @@ -125,7 +124,7 @@ cookie, urlPrefix, sessionID, - connectionStatus: connection?.status ?? 'disconnected', + isSocketConnected: connection?.status === 'connected', lastCommunicatedPlatformDetails, keyserverID, });