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 @@ -316,19 +316,27 @@ ); } -function useAddNewFarcasterMessage(): FarcasterMessage => void { +function useAddNewFarcasterMessage(): FarcasterMessage => Promise { const dispatch = useDispatch(); + const fetchUsersByFIDs = useGetCommFCUsersForFIDs(); return React.useCallback( - (farcasterMessage: FarcasterMessage) => { - const rawMessageInfos = - convertFarcasterMessageToCommMessages(farcasterMessage); + async (farcasterMessage: FarcasterMessage) => { + const userFIDs = extractFarcasterIDsFromPayload( + farcasterMessageValidator, + farcasterMessage, + ); + const fcUserInfos = await fetchUsersByFIDs(userFIDs); + const rawMessageInfos = convertFarcasterMessageToCommMessages( + farcasterMessage, + fcUserInfos, + ); dispatch({ type: processFarcasterOpsActionType, payload: { rawMessageInfos, updateInfos: [] }, }); }, - [dispatch], + [dispatch, fetchUsersByFIDs], ); } diff --git a/lib/tunnelbroker/use-peer-to-peer-message-handler.js b/lib/tunnelbroker/use-peer-to-peer-message-handler.js --- a/lib/tunnelbroker/use-peer-to-peer-message-handler.js +++ b/lib/tunnelbroker/use-peer-to-peer-message-handler.js @@ -663,7 +663,15 @@ } else if ( message.type === peerToPeerMessageTypes.NEW_FARCASTER_MESSAGE ) { - addNewFarcasterMessage(message.message); + try { + await addNewFarcasterMessage(message.message); + } catch (e) { + console.log( + `Error processing new Farcaster message: ${ + getMessageForException(e) ?? 'unknown error' + }`, + ); + } } }, [ diff --git a/lib/utils/convert-farcaster-message-to-comm-messages.js b/lib/utils/convert-farcaster-message-to-comm-messages.js --- a/lib/utils/convert-farcaster-message-to-comm-messages.js +++ b/lib/utils/convert-farcaster-message-to-comm-messages.js @@ -13,11 +13,11 @@ function convertFarcasterMessageToCommMessages( farcasterMessage: FarcasterMessage, - fcUserInfos?: FCUserInfos, + fcUserInfos: FCUserInfos, ): $ReadOnlyArray { const senderFid = farcasterMessage.senderFid.toString(); const creatorID = - fcUserInfos?.get(senderFid)?.userID ?? userIDFromFID(senderFid); + fcUserInfos.get(senderFid)?.userID ?? userIDFromFID(senderFid); const threadID = farcasterThreadIDFromConversationID( farcasterMessage.conversationId, @@ -29,7 +29,7 @@ const addedUserFID = farcasterMessage.actionTargetUserContext.fid.toString(); const addedUser = - fcUserInfos?.get(addedUserFID)?.userID ?? userIDFromFID(addedUserFID); + fcUserInfos.get(addedUserFID)?.userID ?? userIDFromFID(addedUserFID); return [ { id: farcasterMessage.messageId,