Page MenuHomePhorge

D10686.1768927892.diff
No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None

D10686.1768927892.diff

diff --git a/lib/keyserver-conn/keyserver-call-infos.js b/lib/keyserver-conn/keyserver-call-infos.js
new file mode 100644
--- /dev/null
+++ b/lib/keyserver-conn/keyserver-call-infos.js
@@ -0,0 +1,56 @@
+// @flow
+
+import { createSelector } from 'reselect';
+
+import { useDerivedObject } from '../hooks/objects.js';
+import type { PlatformDetails } from '../types/device-types.js';
+import type { KeyserverInfo } from '../types/keyserver-types.js';
+
+export type KeyserverInfoPartial = $ReadOnly<{
+ ...Partial<KeyserverInfo>,
+ +urlPrefix: $PropertyType<KeyserverInfo, 'urlPrefix'>,
+}>;
+
+export type KeyserverCallInfo = {
+ +cookie: ?string,
+ +urlPrefix: string,
+ +sessionID: ?string,
+ +isSocketConnected: boolean,
+ +lastCommunicatedPlatformDetails: ?PlatformDetails,
+};
+
+const createKeyserverCallSelector: () => KeyserverInfoPartial => KeyserverCallInfo =
+ () =>
+ createSelector(
+ (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.cookie,
+ (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.urlPrefix,
+ (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.sessionID,
+ (keyserverInfo: KeyserverInfoPartial) =>
+ keyserverInfo.connection?.status === 'connected',
+ (keyserverInfo: KeyserverInfoPartial) =>
+ keyserverInfo.lastCommunicatedPlatformDetails,
+ (
+ cookie: ?string,
+ urlPrefix: string,
+ sessionID: ?string,
+ isSocketConnected: boolean,
+ lastCommunicatedPlatformDetails: ?PlatformDetails,
+ ) => ({
+ cookie,
+ urlPrefix,
+ sessionID,
+ isSocketConnected,
+ lastCommunicatedPlatformDetails,
+ }),
+ );
+
+function useKeyserverCallInfos(keyserverInfos: {
+ +[keyserverID: string]: KeyserverInfoPartial,
+}): { +[keyserverID: string]: KeyserverCallInfo } {
+ return useDerivedObject<KeyserverInfoPartial, KeyserverCallInfo>(
+ keyserverInfos,
+ createKeyserverCallSelector,
+ );
+}
+
+export { useKeyserverCallInfos };
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
@@ -2,19 +2,17 @@
import _memoize from 'lodash/memoize.js';
import * as React from 'react';
-import { createSelector } from 'reselect';
-import type {
- CallServerEndpoint,
- CallServerEndpointOptions,
-} from './call-server-endpoint.js';
+import type { CallServerEndpointOptions } from './call-server-endpoint.js';
import { promiseAll } from './promises.js';
import { useSelector, useDispatch } from './redux-utils.js';
-import { useDerivedObject } from '../hooks/objects.js';
import { useCallKeyserverEndpointContext } from '../keyserver-conn/call-keyserver-endpoint-provider.react.js';
-import type { PlatformDetails } from '../types/device-types.js';
+import {
+ useKeyserverCallInfos,
+ type KeyserverInfoPartial,
+ type KeyserverCallInfo,
+} from '../keyserver-conn/keyserver-call-infos.js';
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 { CurrentUserInfo } from '../types/user-types.js';
@@ -32,53 +30,6 @@
allKeyserverIDs: $ReadOnlyArray<string>,
) => Args => Promise<Return>;
-type KeyserverInfoPartial = $ReadOnly<{
- ...Partial<KeyserverInfo>,
- +urlPrefix: $PropertyType<KeyserverInfo, 'urlPrefix'>,
-}>;
-
-type KeyserverCallInfo = {
- +cookie: ?string,
- +urlPrefix: string,
- +sessionID: ?string,
- +isSocketConnected: boolean,
- +lastCommunicatedPlatformDetails: ?PlatformDetails,
-};
-
-const createKeyserverCallSelector: () => KeyserverInfoPartial => KeyserverCallInfo =
- () =>
- createSelector(
- (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.cookie,
- (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.urlPrefix,
- (keyserverInfo: KeyserverInfoPartial) => keyserverInfo.sessionID,
- (keyserverInfo: KeyserverInfoPartial) =>
- keyserverInfo.connection?.status === 'connected',
- (keyserverInfo: KeyserverInfoPartial) =>
- keyserverInfo.lastCommunicatedPlatformDetails,
- (
- cookie: ?string,
- urlPrefix: string,
- sessionID: ?string,
- isSocketConnected: boolean,
- lastCommunicatedPlatformDetails: ?PlatformDetails,
- ) => ({
- cookie,
- urlPrefix,
- sessionID,
- isSocketConnected,
- lastCommunicatedPlatformDetails,
- }),
- );
-
-function useKeyserverCallInfos(keyserverInfos: {
- +[keyserverID: string]: KeyserverInfoPartial,
-}): { +[keyserverID: string]: KeyserverCallInfo } {
- return useDerivedObject<KeyserverInfoPartial, KeyserverCallInfo>(
- keyserverInfos,
- createKeyserverCallSelector,
- );
-}
-
type BindCallKeyserverSelector = <Args: mixed, Return>(
keyserverCall: ActionFunc<Args, Return>,
) => Args => Promise<Return>;
@@ -89,10 +40,11 @@
): BindCallKeyserverSelector {
const { createCallSingleKeyserverEndpointSelector } =
useCallKeyserverEndpointContext();
- const getCallSingleKeyserverEndpointSelector = React.useMemo(
- () => _memoize(createCallSingleKeyserverEndpointSelector),
- [createCallSingleKeyserverEndpointSelector],
- );
+ const getCallSingleKeyserverEndpointSelector: typeof createCallSingleKeyserverEndpointSelector =
+ React.useMemo(
+ () => _memoize(createCallSingleKeyserverEndpointSelector),
+ [createCallSingleKeyserverEndpointSelector],
+ );
return React.useMemo(
() =>
_memoize(
@@ -104,7 +56,7 @@
requests: { +[keyserverID: string]: ?{ +[string]: mixed } },
options?: ?CallServerEndpointOptions,
) => {
- const bindCallKeyserverEndpoint = (keyserverID: string) => {
+ const makeCallToSingleKeyserver = (keyserverID: string) => {
const {
cookie,
urlPrefix,
@@ -131,9 +83,9 @@
);
};
- const promises: { [string]: Promise<CallServerEndpoint> } = {};
+ const promises: { [string]: Promise<Object> } = {};
for (const keyserverID in requests) {
- promises[keyserverID] = bindCallKeyserverEndpoint(keyserverID);
+ promises[keyserverID] = makeCallToSingleKeyserver(keyserverID);
}
return promiseAll(promises);
};

File Metadata

Mime Type
text/plain
Expires
Tue, Jan 20, 4:51 PM (13 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5962221
Default Alt Text
D10686.1768927892.diff (6 KB)

Event Timeline