simplify logic to avoid reusing starter pack flowo n native

This commit is contained in:
Hailey
2024-06-17 21:04:28 -07:00
parent ffdc3dca69
commit f6a77cb561
4 changed files with 17 additions and 34 deletions
@@ -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
}
-5
View File
@@ -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,
])
+2 -2
View File
@@ -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)
+4 -21
View File
@@ -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 (