diff --git a/src/components/hooks/useStarterPackEntry.native.ts b/src/components/hooks/useStarterPackEntry.native.ts index 44299dafd2..2cbb5caf68 100644 --- a/src/components/hooks/useStarterPackEntry.native.ts +++ b/src/components/hooks/useStarterPackEntry.native.ts @@ -3,20 +3,20 @@ import React from 'react' import {createStarterPackLinkFromAndroidReferrer} from 'lib/strings/starter-pack' import {isAndroid} from 'platform/detection' import {useSetCurrentStarterPack} from 'state/preferences/starter-pack' -import {useUsedStarterPacks} from 'state/preferences/used-starter-packs' +import {useHasCheckedForStarterPack} from 'state/preferences/used-starter-packs' import SwissArmyKnife from '../../../modules/expo-bluesky-swiss-army' import GooglePlayReferrer from '../../../modules/expo-google-play-referrer' export function useStarterPackEntry() { const [ready, setReady] = React.useState(false) const setCurrentStarterPack = useSetCurrentStarterPack() - const usedStarterPacks = useUsedStarterPacks() - const hasRan = React.useRef(false) + const hasCheckedForStarterPack = useHasCheckedForStarterPack() + const setHasCheckedForStarterPack = useHasCheckedForStarterPack() React.useEffect(() => { - if (ready || hasRan.current) return + if (ready || hasCheckedForStarterPack) return - hasRan.current = true + setHasCheckedForStarterPack(true) ;(async () => { let uri: string | null | undefined @@ -38,7 +38,12 @@ export function useStarterPackEntry() { setReady(true) })() - }, [ready, setCurrentStarterPack, usedStarterPacks]) + }, [ + ready, + setCurrentStarterPack, + setHasCheckedForStarterPack, + hasCheckedForStarterPack, + ]) return ready } diff --git a/src/screens/Onboarding/StepFinished.tsx b/src/screens/Onboarding/StepFinished.tsx index 8df50d6ba9..6e4177d213 100644 --- a/src/screens/Onboarding/StepFinished.tsx +++ b/src/screens/Onboarding/StepFinished.tsx @@ -15,12 +15,10 @@ import {useAgent} from '#/state/session' import {useOnboardingDispatch} from '#/state/shell' import {uploadBlob} from 'lib/api' import {useRequestNotificationsPermission} from 'lib/notifications/notifications' -import {makeStarterPackLink} from 'lib/routes/links' import { useCurrentStarterPack, useSetCurrentStarterPack, } from 'state/preferences/starter-pack' -import {useAddUsedStarterPack} from 'state/preferences/used-starter-packs' import { DescriptionText, OnboardingControls, @@ -50,7 +48,6 @@ export function StepFinished() { const requestNotificationsPermission = useRequestNotificationsPermission() const currentStarterPack = useCurrentStarterPack() const setCurrentStarterPack = useSetCurrentStarterPack() - const addUsedStarterPack = useAddUsedStarterPack() const finishOnboarding = React.useCallback(async () => { setSaving(true) @@ -102,7 +99,6 @@ export function StepFinished() { initialFeed: 'following', }) } - addUsedStarterPack(makeStarterPackLink(starterPack)) } })(), (async () => { @@ -182,7 +178,6 @@ export function StepFinished() { currentStarterPack, state, requestNotificationsPermission, - addUsedStarterPack, setCurrentStarterPack, ]) diff --git a/src/state/preferences/used-starter-packs.tsx b/src/state/preferences/used-starter-packs.tsx index 51f180b322..8d5d9e8283 100644 --- a/src/state/preferences/used-starter-packs.tsx +++ b/src/state/preferences/used-starter-packs.tsx @@ -33,5 +33,5 @@ export function Provider({children}: {children: React.ReactNode}) { ) } -export const useUsedStarterPacks = () => React.useContext(stateContext) -export const useAddUsedStarterPack = () => React.useContext(setContext) +export const useHasCheckedForStarterPack = () => React.useContext(stateContext) +export const useSetHasCheckedForStarterPack = () => React.useContext(setContext) diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index 48a33a092c..fde9354046 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -26,7 +26,6 @@ import { useCurrentStarterPack, useSetCurrentStarterPack, } from 'state/preferences/starter-pack' -import {useUsedStarterPacks} from 'state/preferences/used-starter-packs' import {useLoggedOutViewControls} from 'state/shell/logged-out' import {FeedPage} from 'view/com/feeds/FeedPage' import {Pager, PagerRef, RenderTabBarFnProps} from 'view/com/pager/Pager' @@ -42,30 +41,14 @@ export function HomeScreen(props: Props) { const {data: pinnedFeedInfos, isLoading: isPinnedFeedsLoading} = usePinnedFeedsInfos() const currentStarterPack = useCurrentStarterPack() - const usedStarterPacks = useUsedStarterPacks() const {setShowLoggedOut, requestSwitchToAccount} = useLoggedOutViewControls() React.useEffect(() => { - if (currentStarterPack && !currentStarterPack?.initialFeed) { - // In test environments, the URL won't start with `https://bsky.app`, so we want to find it by the route - try { - const route = new URL(currentStarterPack.uri).pathname - const foundIndex = usedStarterPacks?.findIndex(p => p.includes(route)) - if (foundIndex === -1) { - setShowLoggedOut(true) - requestSwitchToAccount({requestedAccount: 'starterpack'}) - } - } catch { - // Don't need to handle anything here, just put the user on the home screen - } + if (currentStarterPack?.uri && !currentStarterPack?.initialFeed) { + setShowLoggedOut(true) + requestSwitchToAccount({requestedAccount: 'starterpack'}) } - }, [ - setShowLoggedOut, - requestSwitchToAccount, - currentStarterPack?.initialFeed, - currentStarterPack, - usedStarterPacks, - ]) + }, [setShowLoggedOut, requestSwitchToAccount, currentStarterPack]) if (preferences && pinnedFeedInfos && !isPinnedFeedsLoading) { return (