Page MenuHomePhabricator

D12072.id40366.diff
No OneTemporary

D12072.id40366.diff

diff --git a/lib/utils/user-info-extraction-utils.js b/lib/utils/user-info-extraction-utils.js
new file mode 100644
--- /dev/null
+++ b/lib/utils/user-info-extraction-utils.js
@@ -0,0 +1,46 @@
+// @flow
+
+import _memoize from 'lodash/memoize.js';
+import t, { type TType } from 'tcomb';
+
+import type { CallSingleKeyserverEndpointResponse } from '../keyserver-conn/call-single-keyserver-endpoint.js';
+import { mixedRawThreadInfoValidator } from '../permissions/minimally-encoded-raw-thread-info-validators.js';
+import type { Endpoint } from '../types/endpoints.js';
+import { userInfoValidator } from '../types/user-types.js';
+import { endpointValidators } from '../types/validators/endpoint-validators.js';
+import { extractUserIDsFromPayload } from '../utils/conversion-utils.js';
+import { tID, tShape } from '../utils/validation-utils.js';
+
+function extendResponderValidatorBase(inputValidator: TType<*>): TType<*> {
+ return tShape({
+ ...inputValidator.meta.props,
+ cookieChange: t.maybe(
+ tShape({
+ threadInfos: t.dict(tID, mixedRawThreadInfoValidator),
+ userInfos: t.list(userInfoValidator),
+ cookieInvalidated: t.maybe(t.Boolean),
+ sessionID: t.maybe(t.String),
+ cookie: t.maybe(t.String),
+ }),
+ ),
+ error: t.maybe(t.String),
+ payload: t.maybe(t.Object),
+ success: t.maybe(t.Boolean),
+ });
+}
+
+const extendResponderValidator = _memoize(extendResponderValidatorBase);
+
+function extractAndPersistUserInfosFromEndpointResponse(
+ message: CallSingleKeyserverEndpointResponse,
+ endpoint: Endpoint,
+): void {
+ const extendedValidator = extendResponderValidator(
+ endpointValidators[endpoint].validator,
+ );
+ // eslint-disable-next-line no-unused-vars
+ const newUserIDs = extractUserIDsFromPayload(extendedValidator, message);
+ // TODO: dispatch an action adding the new user ids to the UserStore
+}
+
+export { extractAndPersistUserInfosFromEndpointResponse };

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 8:40 PM (17 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2689008
Default Alt Text
D12072.id40366.diff (1 KB)

Event Timeline