Page MenuHomePhorge

D15305.1765085014.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D15305.1765085014.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
@@ -28,10 +28,14 @@
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 sleep from '../../utils/sleep.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 = 20;
const MAX_RETRIES = 3;
@@ -368,6 +372,8 @@
const fetchConversation = useFetchConversationWithBatching();
const fetchMessagesForConversation = useFetchMessagesForConversation();
+ const threadInfos = useSelector(state => state.threadStore.threadInfos);
+
const fetchInboxes: (cursor: ?string) => Promise<void> = React.useCallback(
async (cursor: ?string) => {
try {
@@ -402,6 +408,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(() => {
@@ -410,6 +444,8 @@
}
setInProgress(true);
+ removeDeadThreads();
+
void (async () => {
const farcasterConversations: Array<FarcasterConversation> = [];
@@ -451,6 +487,8 @@
sendFarcasterTextMessage,
utils,
setFarcasterDCsLoaded,
+ threadInfos,
+ removeDeadThreads,
]);
return React.useCallback(

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 5:23 AM (6 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5841430
Default Alt Text
D15305.1765085014.diff (2 KB)

Event Timeline