Page MenuHomePhorge

D10466.1765133219.diff
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

D10466.1765133219.diff

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
@@ -36,7 +36,6 @@
// _memoize memoizes the function by caching the result.
// The first argument of the memoized function is used as the map cache key.
const baseCreateBoundServerCallsSelector = (
- // eslint-disable-next-line no-unused-vars
keyserverID: string,
): (BindServerCallsParams => CallServerEndpoint) =>
createSelector(
@@ -127,70 +126,74 @@
+keyserverCallInfos: { +[keyserverID: string]: KeyserverCallInfo },
};
-const bindCallKeyserverEndpointSelector: BindKeyserverCallParams => <
+type BindCallKeyserverSelectorSelector = BindKeyserverCallParams => <
Args: mixed,
Return,
>(
keyserverCall: ActionFunc<Args, Return>,
-) => Args => Promise<Return> = createSelector(
- (state: BindKeyserverCallParams) => state.dispatch,
- (state: BindKeyserverCallParams) => state.currentUserInfo,
- (state: BindKeyserverCallParams) => state.keyserverCallInfos,
- (
- dispatch: Dispatch,
- currentUserInfo: ?CurrentUserInfo,
- keyserverCallInfos: { +[keyserverID: string]: KeyserverCallInfo },
- ) => {
- return _memoize(
- <Args: mixed, Return>(
- keyserverCall: ActionFunc<Args, Return>,
- ): (Args => Promise<Return>) => {
- const callKeyserverEndpoint = (
- endpoint: Endpoint,
- requests: { +[keyserverID: string]: ?{ +[string]: mixed } },
- options?: ?CallServerEndpointOptions,
- ) => {
- const bindCallKeyserverEndpoint = (keyserverID: string) => {
- const {
- cookie,
- urlPrefix,
- sessionID,
- isSocketConnected,
- lastCommunicatedPlatformDetails,
- } = keyserverCallInfos[keyserverID];
-
- const boundCallServerEndpoint = createBoundServerCallsSelector(
- keyserverID,
- )({
- dispatch,
- currentUserInfo,
- cookie,
- urlPrefix,
- sessionID,
- isSocketConnected,
- lastCommunicatedPlatformDetails,
- keyserverID,
- });
-
- return boundCallServerEndpoint(
- endpoint,
- requests[keyserverID],
- options,
- );
- };
-
- const promises: { [string]: Promise<CallServerEndpoint> } = {};
- for (const keyserverID in requests) {
- promises[keyserverID] = bindCallKeyserverEndpoint(keyserverID);
- }
- return promiseAll(promises);
- };
- const keyserverIDs = Object.keys(keyserverCallInfos);
- return keyserverCall(callKeyserverEndpoint, keyserverIDs);
+) => Args => Promise<Return>;
+
+const createBindCallKeyserverEndpointSelector: () => BindCallKeyserverSelectorSelector =
+ () =>
+ createSelector(
+ (state: BindKeyserverCallParams) => state.dispatch,
+ (state: BindKeyserverCallParams) => state.currentUserInfo,
+ (state: BindKeyserverCallParams) => state.keyserverCallInfos,
+ (
+ dispatch: Dispatch,
+ currentUserInfo: ?CurrentUserInfo,
+ keyserverCallInfos: { +[keyserverID: string]: KeyserverCallInfo },
+ ) => {
+ return _memoize(
+ <Args: mixed, Return>(
+ keyserverCall: ActionFunc<Args, Return>,
+ ): (Args => Promise<Return>) => {
+ const callKeyserverEndpoint = (
+ endpoint: Endpoint,
+ requests: { +[keyserverID: string]: ?{ +[string]: mixed } },
+ options?: ?CallServerEndpointOptions,
+ ) => {
+ const bindCallKeyserverEndpoint = (keyserverID: string) => {
+ const {
+ cookie,
+ urlPrefix,
+ sessionID,
+ isSocketConnected,
+ lastCommunicatedPlatformDetails,
+ } = keyserverCallInfos[keyserverID];
+
+ const boundCallServerEndpoint = createBoundServerCallsSelector(
+ keyserverID,
+ )({
+ dispatch,
+ currentUserInfo,
+ cookie,
+ urlPrefix,
+ sessionID,
+ isSocketConnected,
+ lastCommunicatedPlatformDetails,
+ keyserverID,
+ });
+
+ return boundCallServerEndpoint(
+ endpoint,
+ requests[keyserverID],
+ options,
+ );
+ };
+
+ const promises: { [string]: Promise<CallServerEndpoint> } = {};
+ for (const keyserverID in requests) {
+ promises[keyserverID] = bindCallKeyserverEndpoint(keyserverID);
+ }
+ return promiseAll(promises);
+ };
+ const keyserverIDs = Object.keys(keyserverCallInfos);
+ return keyserverCall(callKeyserverEndpoint, keyserverIDs);
+ },
+ );
},
);
- },
-);
export type KeyserverCallParamOverride = Partial<{
+dispatch: Dispatch,
@@ -219,7 +222,15 @@
baseCombinedInfo;
const keyserverCallInfos = useKeyserverCallInfos(keyserverInfoPartials);
- const bindCallKeyserverEndpointToAction = bindCallKeyserverEndpointSelector({
+ const bindCallKeyserverEndpointSelectorRef =
+ React.useRef<?BindCallKeyserverSelectorSelector>();
+ if (!bindCallKeyserverEndpointSelectorRef.current) {
+ bindCallKeyserverEndpointSelectorRef.current =
+ createBindCallKeyserverEndpointSelector();
+ }
+ const bindSelector = bindCallKeyserverEndpointSelectorRef.current;
+
+ const bindCallKeyserverEndpointToAction = bindSelector({
...restCombinedInfo,
keyserverCallInfos,
});

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 6:46 PM (9 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5845507
Default Alt Text
D10466.1765133219.diff (5 KB)

Event Timeline