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 @@ -19,6 +19,7 @@ farcasterMessageValidator, } from './farcaster-messages-types.js'; import { useIsUserDataReady } from '../../hooks/backup-hooks.js'; +import { useGetLatestMessageEdit } from '../../hooks/latest-message-edit.js'; import { useGetCommFCUsersForFIDs } from '../../hooks/user-identities-hooks.js'; import type { GetCommFCUsersForFIDs } from '../../hooks/user-identities-hooks.js'; import { isLoggedIn } from '../../selectors/user-selectors.js'; @@ -612,6 +613,10 @@ function useAddNewFarcasterMessage(): FarcasterMessage => Promise { const dispatch = useDispatch(); const fetchUsersByFIDs = useGetCommFCUsersForFIDs(); + const viewerID = useSelector( + state => state.currentUserInfo && state.currentUserInfo.id, + ); + const fetchMessage = useGetLatestMessageEdit(); return React.useCallback( async (farcasterMessage: FarcasterMessage) => { @@ -625,12 +630,28 @@ fcUserInfos, ); const userIDs = userFIDs.map(fid => userIDFromFID(`${fid}`)); + + const updates: Array = []; + const message = rawMessageInfos[0]; + if (message && message.id && viewerID !== message.creatorID) { + const dbMessage = await fetchMessage(message.id); + if (!dbMessage) { + updates.push({ + id: uuid.v4(), + type: updateTypes.UPDATE_THREAD_READ_STATUS, + time: message.time, + threadID: message.threadID, + unread: true, + }); + } + } + dispatch({ type: processFarcasterOpsActionType, - payload: { rawMessageInfos, updateInfos: [], userIDs }, + payload: { rawMessageInfos, updateInfos: updates, userIDs }, }); }, - [dispatch, fetchUsersByFIDs], + [dispatch, fetchMessage, fetchUsersByFIDs, viewerID], ); }