Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32159094
socket.react.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
socket.react.js
View Options
// @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
Details
Attached
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)
Attached To
Mode
rCOMM Comm
Attached
Detach File
Event Timeline
Log In to Comment