Page MenuHomePhorge

D10466.1765099180.diff
No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None

D10466.1765099180.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(
@@ -121,76 +120,67 @@
);
}
-type BindKeyserverCallParams = {
- +dispatch: Dispatch,
- +currentUserInfo: ?CurrentUserInfo,
- +keyserverCallInfos: { +[keyserverID: string]: KeyserverCallInfo },
-};
-
-const bindCallKeyserverEndpointSelector: BindKeyserverCallParams => <
- Args: mixed,
- Return,
->(
+type BindCallKeyserverSelector = <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,
- );
+) => Args => Promise<Return>;
+function useBindCallKeyserverEndpointSelector(
+ dispatch: Dispatch,
+ currentUserInfo: ?CurrentUserInfo,
+ keyserverCallInfos: { +[keyserverID: string]: KeyserverCallInfo },
+): BindCallKeyserverSelector {
+ return React.useMemo(
+ () =>
+ _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 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);
- },
- );
- },
-);
+ const keyserverIDs = Object.keys(keyserverCallInfos);
+ return keyserverCall(callKeyserverEndpoint, keyserverIDs);
+ },
+ ),
+ [dispatch, currentUserInfo, keyserverCallInfos],
+ );
+}
export type KeyserverCallParamOverride = Partial<{
+dispatch: Dispatch,
@@ -202,27 +192,33 @@
keyserverCall: ActionFunc<Args, Return>,
paramOverride?: ?KeyserverCallParamOverride,
): Args => Promise<Return> {
- const dispatch = useDispatch();
- const currentUserInfo = useSelector(state => state.currentUserInfo);
+ const baseDispatch = useDispatch();
+ const baseCurrentUserInfo = useSelector(state => state.currentUserInfo);
const keyserverInfos = useSelector(
state => state.keyserverStore.keyserverInfos,
);
const baseCombinedInfo = {
- dispatch,
+ dispatch: baseDispatch,
+ currentUserInfo: baseCurrentUserInfo,
keyserverInfos,
- currentUserInfo,
...paramOverride,
};
- const { keyserverInfos: keyserverInfoPartials, ...restCombinedInfo } =
- baseCombinedInfo;
+ const {
+ dispatch,
+ currentUserInfo,
+ keyserverInfos: keyserverInfoPartials,
+ } = baseCombinedInfo;
const keyserverCallInfos = useKeyserverCallInfos(keyserverInfoPartials);
- const bindCallKeyserverEndpointToAction = bindCallKeyserverEndpointSelector({
- ...restCombinedInfo,
- keyserverCallInfos,
- });
+ const bindCallKeyserverEndpointToAction =
+ useBindCallKeyserverEndpointSelector(
+ dispatch,
+ currentUserInfo,
+ keyserverCallInfos,
+ );
+
return React.useMemo(
() => bindCallKeyserverEndpointToAction(keyserverCall),
[bindCallKeyserverEndpointToAction, keyserverCall],

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 9:19 AM (19 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5842197
Default Alt Text
D10466.1765099180.diff (6 KB)

Event Timeline