Page MenuHomePhabricator

D13416.id44390.diff
No OneTemporary

D13416.id44390.diff

diff --git a/lib/actions/holder-actions.js b/lib/actions/holder-actions.js
--- a/lib/actions/holder-actions.js
+++ b/lib/actions/holder-actions.js
@@ -122,6 +122,35 @@
return { added, notAdded, removed, notRemoved };
}
+function useClearAllHolders(): () => Promise<void> {
+ const dispatchActionPromise = useDispatchActionPromise();
+ const identityContext = React.useContext(IdentityClientContext);
+ const getAuthMetadata = identityContext?.getAuthMetadata;
+
+ const holdersToRemove = useSelector(state =>
+ Object.entries(state.holderStore.storedHolders)
+ .filter(([, holderInfo]) => holderInfo.status !== 'PENDING_REMOVAL')
+ .map(([blobHash, { holder }]) => ({ blobHash, holder })),
+ );
+
+ return React.useCallback(async () => {
+ invariant(getAuthMetadata, 'Identity context not set');
+ const authMetadata = await getAuthMetadata();
+ const input = {
+ holdersToRemove,
+ holdersToAdd: [],
+ };
+ void processHoldersAction(input, authMetadata);
+ const promise = processHoldersAction(input, authMetadata);
+ void dispatchActionPromise(
+ processHoldersActionTypes,
+ promise,
+ undefined,
+ input,
+ );
+ }, [dispatchActionPromise, getAuthMetadata, holdersToRemove]);
+}
+
function useProcessBlobHolders(): (
blobOperations: $ReadOnlyArray<BlobOperation>,
) => Promise<void> {
@@ -184,4 +213,4 @@
);
}
-export { useProcessBlobHolders };
+export { useClearAllHolders, useProcessBlobHolders };
diff --git a/lib/actions/user-actions.js b/lib/actions/user-actions.js
--- a/lib/actions/user-actions.js
+++ b/lib/actions/user-actions.js
@@ -3,6 +3,7 @@
import invariant from 'invariant';
import * as React from 'react';
+import { useClearAllHolders } from './holder-actions.js';
import { useUserIdentityCache } from '../components/user-identity-cache.react.js';
import {
useBroadcastDeviceListUpdates,
@@ -154,6 +155,8 @@
const preRequestUserState = usePreRequestUserState();
const callKeyserverLogOut = useKeyserverCall(keyserverLogOut);
+ const removeAllHolders = useClearAllHolders();
+
const commServicesAccessToken = useSelector(
state => state.commServicesAccessToken,
);
@@ -204,6 +207,7 @@
keyserverIDs,
}),
identityPromise,
+ removeAllHolders(),
]);
return {
...result,
@@ -219,6 +223,7 @@
identityClient,
logOutType,
preRequestUserState,
+ removeAllHolders,
skipIdentityLogOut,
],
);

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 21, 10:07 AM (13 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2160966
Default Alt Text
D13416.id44390.diff (2 KB)

Event Timeline