Page MenuHomePhorge

socket.react.js
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

socket.react.js

// @flow
import invariant from 'invariant';
import * as React from 'react';
import { useFetchPendingUpdates } from 'lib/actions/update-actions.js';
import { preRequestUserStateForSingleKeyserverSelector } from 'lib/selectors/account-selectors.js';
import {
cookieSelector,
connectionSelector,
lastCommunicatedPlatformDetailsSelector,
} from 'lib/selectors/keyserver-selectors.js';
import { openSocketSelector } from 'lib/selectors/socket-selectors.js';
import { isLoggedIn } from 'lib/selectors/user-selectors.js';
import { useInitialNotificationsEncryptedMessage } from 'lib/shared/crypto-utils.js';
import Socket, { type BaseSocketProps } from 'lib/socket/socket.react.js';
import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
import { useDispatch } from 'lib/utils/redux-utils.js';
import {
nativeCalendarQuery,
useForegroundActiveThread,
} from './navigation/nav-selectors.js';
import { NavContext } from './navigation/navigation-context.js';
import { useSelector } from './redux/redux-utils.js';
import {
sessionIdentificationSelector,
nativeGetClientResponsesSelector,
nativeSessionStateFuncSelector,
} from './selectors/socket-selectors.js';
import { decompressMessage } from './utils/decompress.js';
const NativeSocket: React.ComponentType<BaseSocketProps> =
React.memo<BaseSocketProps>(function NativeSocket(props: BaseSocketProps) {
const navContext = React.useContext(NavContext);
const { keyserverID } = props;
const cookie = useSelector(cookieSelector(keyserverID));
const connection = useSelector(connectionSelector(keyserverID));
invariant(connection, 'keyserver missing from keyserverStore');
const frozen = useSelector(state => state.frozen);
const active = useSelector(
state => isLoggedIn(state) && state.lifecycleState !== 'background',
);
const openSocket = useSelector(openSocketSelector(keyserverID));
invariant(openSocket, 'openSocket failed to be created');
const sessionIdentification = useSelector(
sessionIdentificationSelector(keyserverID),
);
const preRequestUserState = useSelector(
preRequestUserStateForSingleKeyserverSelector(keyserverID),
);
const getInitialNotificationsEncryptedMessage =
useInitialNotificationsEncryptedMessage(keyserverID);
const getClientResponses = useSelector(state =>
nativeGetClientResponsesSelector({
redux: state,
navContext,
getInitialNotificationsEncryptedMessage,
keyserverID,
}),
);
const sessionStateFunc = useSelector(state =>
nativeSessionStateFuncSelector(keyserverID)({
redux: state,
navContext,
}),
);
const currentCalendarQuery = useSelector(state =>
nativeCalendarQuery({
redux: state,
navContext,
}),
);
const activeThread = useForegroundActiveThread();
const lastCommunicatedPlatformDetails = useSelector(
lastCommunicatedPlatformDetailsSelector(keyserverID),
);
const dispatch = useDispatch();
const dispatchActionPromise = useDispatchActionPromise();
const activeSessionRecovery = useSelector(
state =>
state.keyserverStore.keyserverInfos[keyserverID]?.connection
.activeSessionRecovery,
);
const fetchPendingUpdates = useFetchPendingUpdates();
const isConnectedToInternet = useSelector(
state => state.connectivity.connected,
);
return (
<Socket
{...props}
active={active}
openSocket={openSocket}
getClientResponses={getClientResponses}
activeThread={activeThread}
sessionStateFunc={sessionStateFunc}
sessionIdentification={sessionIdentification}
cookie={cookie}
connection={connection}
currentCalendarQuery={currentCalendarQuery}
frozen={frozen}
preRequestUserState={preRequestUserState}
dispatch={dispatch}
dispatchActionPromise={dispatchActionPromise}
lastCommunicatedPlatformDetails={lastCommunicatedPlatformDetails}
decompressSocketMessage={decompressMessage}
activeSessionRecovery={activeSessionRecovery}
fetchPendingUpdates={fetchPendingUpdates}
isConnectedToInternet={isConnectedToInternet}
/>
);
});
export default NativeSocket;

File Metadata

Mime Type
text/x-java
Expires
Sun, Dec 7, 4:26 PM (17 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5752142
Default Alt Text
socket.react.js (4 KB)

Event Timeline