Page MenuHomePhorge

D15305.1765063593.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D15305.1765063593.diff

diff --git a/lib/shared/farcaster/farcaster-hooks.js b/lib/shared/farcaster/farcaster-hooks.js
--- a/lib/shared/farcaster/farcaster-hooks.js
+++ b/lib/shared/farcaster/farcaster-hooks.js
@@ -23,9 +23,13 @@
import { convertFarcasterMessageToCommMessages } from '../../utils/convert-farcaster-message-to-comm-messages.js';
import { createFarcasterRawThreadInfo } from '../../utils/create-farcaster-raw-thread-info.js';
import { useSetFarcasterDCsLoaded } from '../../utils/farcaster-utils.js';
-import { useDispatch } from '../../utils/redux-utils.js';
+import { values } from '../../utils/objects.js';
+import { useDispatch, useSelector } from '../../utils/redux-utils.js';
import { useSendDMOperationUtils } from '../dm-ops/dm-op-utils.js';
-import { userIDFromFID } from '../id-utils.js';
+import {
+ conversationIDFromFarcasterThreadID,
+ userIDFromFID,
+} from '../id-utils.js';
const FARCASTER_DATA_BATCH_SIZE = 3;
@@ -230,6 +234,8 @@
const fetchConversation = useFetchConversation();
const fetchMessagesForConversation = useFetchMessagesForConversation();
+ const threadInfos = useSelector(state => state.threadStore.threadInfos);
+
const fetchInboxes: (cursor: ?string) => Promise<void> = React.useCallback(
async (cursor: ?string) => {
try {
@@ -260,6 +266,34 @@
[fetchFarcasterInbox],
);
+ const removeDeadThreads = React.useCallback(() => {
+ const conversationsSet = new Set(conversations);
+ const time = Date.now();
+
+ const updateInfos = values(threadInfos)
+ .filter(
+ threadInfo =>
+ threadInfo.farcaster &&
+ !conversationsSet.has(
+ conversationIDFromFarcasterThreadID(threadInfo.id),
+ ),
+ )
+ .map(threadInfo => ({
+ type: updateTypes.DELETE_THREAD,
+ id: uuid.v4(),
+ time,
+ threadID: threadInfo.id,
+ }));
+
+ dispatch({
+ type: processFarcasterOpsActionType,
+ payload: {
+ rawMessageInfos: [],
+ updateInfos,
+ },
+ });
+ }, [conversations, dispatch, threadInfos]);
+
const [inProgress, setInProgress] = React.useState(false);
const setFarcasterDCsLoaded = useSetFarcasterDCsLoaded();
React.useEffect(() => {
@@ -268,6 +302,8 @@
}
setInProgress(true);
+ removeDeadThreads();
+
void (async () => {
const farcasterConversations: Array<FarcasterConversation> = [];
@@ -304,6 +340,8 @@
sendFarcasterTextMessage,
utils,
setFarcasterDCsLoaded,
+ threadInfos,
+ removeDeadThreads,
]);
return React.useCallback(

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 11:26 PM (9 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5841428
Default Alt Text
D15305.1765063593.diff (2 KB)

Event Timeline