diff --git a/native/components/connect-farcaster-alert-handler.react.js b/native/components/connect-farcaster-alert-handler.react.js --- a/native/components/connect-farcaster-alert-handler.react.js +++ b/native/components/connect-farcaster-alert-handler.react.js @@ -9,7 +9,10 @@ alertTypes, type RecordAlertActionPayload, } from 'lib/types/alert-types.js'; -import { useCurrentUserFID } from 'lib/utils/farcaster-utils.js'; +import { + useCurrentUserFID, + useSetLocalFID, +} from 'lib/utils/farcaster-utils.js'; import { shouldSkipConnectFarcasterAlert } from 'lib/utils/push-alerts.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; import sleep from 'lib/utils/sleep.js'; @@ -26,6 +29,8 @@ const fid = useCurrentUserFID(); + const setLocalFID = useSetLocalFID(); + const connectFarcasterAlertInfo = useSelector( state => state.alertStore.alertInfos[alertTypes.CONNECT_FARCASTER], ); @@ -44,6 +49,11 @@ void (async () => { await sleep(1000); + // We set the local FID to null to prevent the prompt from being displayed + // again. We set it here, rather than in the bottom sheet itself, to avoid + // the scenario where the user connects their Farcaster account but we + // accidentally overwrite the FID on close and set it to null. + setLocalFID(null); navigate(ConnectFarcasterBottomSheetRouteName); const payload: RecordAlertActionPayload = { @@ -56,7 +66,15 @@ payload, }); })(); - }, [connectFarcasterAlertInfo, dispatch, fid, isActive, loggedIn, navigate]); + }, [ + connectFarcasterAlertInfo, + dispatch, + fid, + isActive, + loggedIn, + navigate, + setLocalFID, + ]); return null; } diff --git a/native/components/connect-farcaster-bottom-sheet.react.js b/native/components/connect-farcaster-bottom-sheet.react.js --- a/native/components/connect-farcaster-bottom-sheet.react.js +++ b/native/components/connect-farcaster-bottom-sheet.react.js @@ -55,8 +55,6 @@ [tryLinkFID], ); - const bottomSheetRef = React.useRef(null); - const bottomSheetContext = React.useContext(BottomSheetContext); invariant(bottomSheetContext, 'bottomSheetContext should be set'); const { setContentHeight } = bottomSheetContext; @@ -73,9 +71,9 @@ React.useEffect(() => { if (fid && isAppForegrounded) { - bottomSheetRef.current?.close(); + goBack(); } - }, [fid, isAppForegrounded]); + }, [fid, goBack, isAppForegrounded]); const onPressConnect = React.useCallback(() => { setIsLoadingLinkFID(true); @@ -86,7 +84,7 @@ const connectFarcasterBottomSheet = React.useMemo( () => ( - + @@ -100,7 +98,7 @@ ), - [connectButtonVariant, goBack, onPressConnect, onSuccess, webViewState], + [goBack, onPressConnect, connectButtonVariant, onSuccess, webViewState], ); return connectFarcasterBottomSheet;