Page MenuHomePhorge

D15260.1764994224.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D15260.1764994224.diff

diff --git a/lib/hooks/user-identities-hooks.js b/lib/hooks/user-identities-hooks.js
--- a/lib/hooks/user-identities-hooks.js
+++ b/lib/hooks/user-identities-hooks.js
@@ -44,4 +44,45 @@
);
}
-export { useUsersSupportThickThreads };
+function useUsersSupportFarcasterDCs(): (
+ userIDs: $ReadOnlyArray<string>,
+) => Promise<$ReadOnlyMap<string, boolean | void>> {
+ const findUserIdentities = useFindUserIdentities();
+ const auxUserInfos = useSelector(state => state.auxUserStore.auxUserInfos);
+
+ return React.useCallback(
+ async (userIDs: $ReadOnlyArray<string>) => {
+ const usersSupportingFCDCs = new Map<string, boolean | void>();
+
+ const usersNeedingFetch = [];
+ for (const userID of userIDs) {
+ if (auxUserInfos[userID]?.supportsFarcasterDCs) {
+ usersSupportingFCDCs.set(userID, true);
+ } else {
+ usersNeedingFetch.push(userID);
+ }
+ }
+ if (usersNeedingFetch.length > 0) {
+ const { identities, reservedUserIdentifiers } =
+ await findUserIdentities(usersNeedingFetch);
+ for (const userID of usersNeedingFetch) {
+ // for reserved users, we set DCs support to false
+ const isReserved = !!reservedUserIdentifiers[userID];
+ const doesNotExist = identities[userID] === undefined && !isReserved;
+
+ if (identities[userID]?.hasFarcasterDCsToken) {
+ usersSupportingFCDCs.set(userID, true);
+ } else if (doesNotExist) {
+ usersSupportingFCDCs.set(userID, undefined);
+ } else {
+ usersSupportingFCDCs.set(userID, false);
+ }
+ }
+ }
+ return usersSupportingFCDCs;
+ },
+ [auxUserInfos, findUserIdentities],
+ );
+}
+
+export { useUsersSupportThickThreads, useUsersSupportFarcasterDCs };

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 4:10 AM (9 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5831987
Default Alt Text
D15260.1764994224.diff (1 KB)

Event Timeline