Page MenuHomePhabricator

D9709.diff
No OneTemporary

D9709.diff

diff --git a/lib/shared/state-sync/current-user-state-sync-spec.js b/lib/shared/state-sync/current-user-state-sync-spec.js
--- a/lib/shared/state-sync/current-user-state-sync-spec.js
+++ b/lib/shared/state-sync/current-user-state-sync-spec.js
@@ -2,11 +2,24 @@
import { createSelector } from 'reselect';
-import type { StateSyncSpec } from './state-sync-spec.js';
+import type { StateSyncSpec, BoundStateSyncSpec } from './state-sync-spec.js';
import type { AppState } from '../../types/redux-types';
import { type CurrentUserInfo } from '../../types/user-types.js';
import { hash } from '../../utils/objects.js';
+const selector: (
+ state: AppState,
+) => BoundStateSyncSpec<CurrentUserInfo, CurrentUserInfo, void> =
+ createSelector(
+ (state: AppState) => state.currentUserInfo,
+ (currentUserInfo: ?CurrentUserInfo) => ({
+ ...currentUserStateSyncSpec,
+ getInfoHash: () => hash(currentUserInfo),
+ getAllInfosHash: () => hash(currentUserInfo),
+ getIDs: () => ([]: string[]),
+ }),
+ );
+
export const currentUserStateSyncSpec: StateSyncSpec<
CurrentUserInfo,
CurrentUserInfo,
@@ -16,13 +29,5 @@
findStoreInconsistencies() {
return undefined;
},
- selector: createSelector(
- (state: AppState) => state.currentUserInfo,
- currentUserInfo => ({
- ...currentUserStateSyncSpec,
- getInfoHash: () => hash(currentUserInfo),
- getAllInfosHash: () => hash(currentUserInfo),
- getIDs: () => [],
- }),
- ),
+ selector,
});
diff --git a/lib/shared/state-sync/entries-state-sync-spec.js b/lib/shared/state-sync/entries-state-sync-spec.js
--- a/lib/shared/state-sync/entries-state-sync-spec.js
+++ b/lib/shared/state-sync/entries-state-sync-spec.js
@@ -3,7 +3,7 @@
import _isEqual from 'lodash/fp/isEqual.js';
import { createSelector } from 'reselect';
-import type { StateSyncSpec } from './state-sync-spec.js';
+import type { StateSyncSpec, BoundStateSyncSpec } from './state-sync-spec.js';
import {
type CalendarQuery,
type RawEntryInfos,
@@ -26,6 +26,24 @@
serverEntryInfosObject,
} from '../entry-utils.js';
+const selector: (
+ state: AppState,
+) => BoundStateSyncSpec<
+ RawEntryInfos,
+ RawEntryInfo,
+ $ReadOnlyArray<ClientEntryInconsistencyReportCreationRequest>,
+> = createSelector(
+ (state: AppState) => state.entryStore.entryInfos,
+ (entryInfos: RawEntryInfos) => ({
+ ...entriesStateSyncSpec,
+ getInfoHash: (id: string) => hash(entryInfos[`${ashoatKeyserverID}|${id}`]),
+ getAllInfosHash: (calendarQuery: CalendarQuery) =>
+ getEntryInfosHash(entryInfos, calendarQuery),
+ getIDs: (calendarQuery: CalendarQuery) =>
+ getEntryIDs(entryInfos, calendarQuery),
+ }),
+);
+
export const entriesStateSyncSpec: StateSyncSpec<
RawEntryInfos,
RawEntryInfo,
@@ -71,18 +89,7 @@
},
];
},
- selector: createSelector(
- (state: AppState) => state.entryStore.entryInfos,
- entryInfos => ({
- ...entriesStateSyncSpec,
- getInfoHash: (id: string) =>
- hash(entryInfos[`${ashoatKeyserverID}|${id}`]),
- getAllInfosHash: (calendarQuery: CalendarQuery) =>
- getEntryInfosHash(entryInfos, calendarQuery),
- getIDs: (calendarQuery: CalendarQuery) =>
- getEntryIDs(entryInfos, calendarQuery),
- }),
- ),
+ selector,
});
const emptyArray: $ReadOnlyArray<ClientEntryInconsistencyReportCreationRequest> =
diff --git a/lib/shared/state-sync/threads-state-sync-spec.js b/lib/shared/state-sync/threads-state-sync-spec.js
--- a/lib/shared/state-sync/threads-state-sync-spec.js
+++ b/lib/shared/state-sync/threads-state-sync-spec.js
@@ -3,7 +3,7 @@
import _isEqual from 'lodash/fp/isEqual.js';
import { createSelector } from 'reselect';
-import type { StateSyncSpec } from './state-sync-spec.js';
+import type { StateSyncSpec, BoundStateSyncSpec } from './state-sync-spec.js';
import type { AppState } from '../../types/redux-types.js';
import {
reportTypes,
@@ -21,6 +21,27 @@
import { sanitizeActionSecrets } from '../../utils/sanitization.js';
import { ashoatKeyserverID } from '../../utils/validation-utils.js';
+const selector: (
+ state: AppState,
+) => BoundStateSyncSpec<
+ RawThreadInfos,
+ RawThreadInfo,
+ $ReadOnlyArray<ClientThreadInconsistencyReportCreationRequest>,
+> = createSelector(
+ (state: AppState) => state.integrityStore.threadHashes,
+ (state: AppState) => state.integrityStore.threadHashingStatus === 'completed',
+ (threadHashes: { +[string]: number }, threadHashingComplete: boolean) => ({
+ ...threadsStateSyncSpec,
+ getInfoHash: (id: string) => threadHashes[`${ashoatKeyserverID}|${id}`],
+ getAllInfosHash: threadHashingComplete
+ ? () => combineUnorderedHashes(values(threadHashes))
+ : () => null,
+ getIDs: threadHashingComplete
+ ? () => Object.keys(threadHashes).map(id => id.split('|')[1])
+ : () => null,
+ }),
+);
+
export const threadsStateSyncSpec: StateSyncSpec<
RawThreadInfos,
RawThreadInfo,
@@ -53,21 +74,7 @@
},
];
},
- selector: createSelector(
- (state: AppState) => state.integrityStore.threadHashes,
- (state: AppState) =>
- state.integrityStore.threadHashingStatus === 'completed',
- (threadHashes, threadHashingComplete) => ({
- ...threadsStateSyncSpec,
- getInfoHash: (id: string) => threadHashes[`${ashoatKeyserverID}|${id}`],
- getAllInfosHash: threadHashingComplete
- ? () => combineUnorderedHashes(values(threadHashes))
- : () => null,
- getIDs: threadHashingComplete
- ? () => Object.keys(threadHashes).map(id => id.split('|')[1])
- : () => null,
- }),
- ),
+ selector,
});
const emptyArray: $ReadOnlyArray<ClientThreadInconsistencyReportCreationRequest> =
diff --git a/lib/shared/state-sync/users-state-sync-spec.js b/lib/shared/state-sync/users-state-sync-spec.js
--- a/lib/shared/state-sync/users-state-sync-spec.js
+++ b/lib/shared/state-sync/users-state-sync-spec.js
@@ -3,7 +3,7 @@
import _isEqual from 'lodash/fp/isEqual.js';
import { createSelector } from 'reselect';
-import type { StateSyncSpec } from './state-sync-spec.js';
+import type { StateSyncSpec, BoundStateSyncSpec } from './state-sync-spec.js';
import type { AppState } from '../../types/redux-types';
import {
type ClientUserInconsistencyReportCreationRequest,
@@ -17,6 +17,23 @@
import { generateReportID } from '../../utils/report-utils.js';
import { sanitizeActionSecrets } from '../../utils/sanitization.js';
+const selector: (
+ state: AppState,
+) => BoundStateSyncSpec<
+ UserInfos,
+ UserInfo,
+ $ReadOnlyArray<ClientUserInconsistencyReportCreationRequest>,
+> = createSelector(
+ (state: AppState) => state.userStore.userInfos,
+ (userInfos: UserInfos) => ({
+ ...usersStateSyncSpec,
+ getInfoHash: (id: string) => hash(userInfos[id]),
+ getAllInfosHash: () =>
+ combineUnorderedHashes(Object.values(userInfos).map(hash)),
+ getIDs: () => Object.keys(userInfos),
+ }),
+);
+
export const usersStateSyncSpec: StateSyncSpec<
UserInfos,
UserInfo,
@@ -52,16 +69,7 @@
},
];
},
- selector: createSelector(
- (state: AppState) => state.userStore.userInfos,
- userInfos => ({
- ...usersStateSyncSpec,
- getInfoHash: (id: string) => hash(userInfos[id]),
- getAllInfosHash: () =>
- combineUnorderedHashes(Object.values(userInfos).map(hash)),
- getIDs: () => Object.keys(userInfos),
- }),
- ),
+ selector,
});
const emptyArray: $ReadOnlyArray<ClientUserInconsistencyReportCreationRequest> =

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 9, 2:03 AM (20 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2447392
Default Alt Text
D9709.diff (7 KB)

Event Timeline