From b4e220ede971ba428a80f0926a66843f13957cb1 Mon Sep 17 00:00:00 2001 From: Hailey Date: Thu, 13 Jun 2024 14:12:40 -0700 Subject: [PATCH] handle landing on start link --- src/App.web.tsx | 2 ++ src/components/hooks/useStarterPackEntry.ts | 9 +++++++-- src/routes.ts | 2 +- src/view/com/auth/LoggedOut.tsx | 7 ++++--- src/view/screens/Home.tsx | 11 +++++++++++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/App.web.tsx b/src/App.web.tsx index 5c4dc4e637..b8a493b5ee 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -39,6 +39,7 @@ import {ToastContainer} from 'view/com/util/Toast.web' import {Shell} from 'view/shell/index' import {ThemeProvider as Alf} from '#/alf' import {useColorModeTheme} from '#/alf/util/useColorModeTheme' +import {useStarterPackEntry} from '#/components/hooks/useStarterPackEntry' import {Provider as PortalProvider} from '#/components/Portal' import {BackgroundNotificationPreferencesProvider} from '../modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider' import I18nProvider from './locale/i18nProvider' @@ -51,6 +52,7 @@ function InnerApp() { const theme = useColorModeTheme() const {_} = useLingui() useIntentHandler() + useStarterPackEntry() // init useEffect(() => { diff --git a/src/components/hooks/useStarterPackEntry.ts b/src/components/hooks/useStarterPackEntry.ts index ee5d3ad948..b6cf2cade8 100644 --- a/src/components/hooks/useStarterPackEntry.ts +++ b/src/components/hooks/useStarterPackEntry.ts @@ -6,16 +6,21 @@ export function useStarterPackEntry() { const setUsedStarterPack = useSetUsedStarterPack() React.useEffect(() => { - const url = new URL(window.href) + const url = new URL(window.location.href) - if (url.href.startsWith('https://bsky.app/start/')) { + if (url.pathname.startsWith('/start/')) { + console.log('yes sp') const [_, _start, name, rkey] = url.pathname.split('/') + console.log() + if (name && rkey) { setUsedStarterPack({ uri: window.href, }) } + } else { + console.log('no sp') } }, [setUsedStarterPack]) diff --git a/src/routes.ts b/src/routes.ts index 26928bb1ab..3cd1e7a8c3 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -1,7 +1,7 @@ import {Router} from 'lib/routes/router' export const router = new Router({ - Home: '/', + Home: ['/', '/start/:name/:rkey'], Search: '/search', Feeds: '/feeds', Notifications: '/notifications', diff --git a/src/view/com/auth/LoggedOut.tsx b/src/view/com/auth/LoggedOut.tsx index 6a87c20dc4..041f7ca15d 100644 --- a/src/view/com/auth/LoggedOut.tsx +++ b/src/view/com/auth/LoggedOut.tsx @@ -17,7 +17,6 @@ import { useLoggedOutViewControls, } from '#/state/shell/logged-out' import {useSetMinimalShellMode} from '#/state/shell/minimal-mode' -import {IS_DEV, IS_TESTFLIGHT} from 'lib/app-info' import {NavigationProp} from 'lib/routes/types' import {useUsedStarterPack} from 'state/preferences/starter-pack' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' @@ -48,8 +47,6 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { ? requestedAccountSwitchTo === 'new' ? ScreenState.S_CreateAccount : ScreenState.S_Login - : usedStarterPack?.uri && (IS_TESTFLIGHT || IS_DEV) - ? ScreenState.S_StarterPack : ScreenState.S_LoginOrCreateAccount, ) const {isMobile} = useWebMediaQueries() @@ -62,6 +59,10 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) { setMinimalShellMode(true) }, [screen, setMinimalShellMode]) + React.useEffect(() => { + setScreenState(ScreenState.S_StarterPack) + }, [usedStarterPack?.uri]) + const onPressDismiss = React.useCallback(() => { if (onDismiss) { onDismiss() diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index c3d2873a26..cdf2be65ea 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -26,6 +26,7 @@ import { useSetUsedStarterPack, useUsedStarterPack, } from 'state/preferences/starter-pack' +import {useLoggedOutViewControls} from 'state/shell/logged-out' import {FeedPage} from 'view/com/feeds/FeedPage' import {Pager, PagerRef, RenderTabBarFnProps} from 'view/com/pager/Pager' import {CustomFeedEmptyState} from 'view/com/posts/CustomFeedEmptyState' @@ -39,6 +40,16 @@ export function HomeScreen(props: Props) { const {data: preferences} = usePreferencesQuery() const {data: pinnedFeedInfos, isLoading: isPinnedFeedsLoading} = usePinnedFeedsInfos() + const usedStarterPack = useUsedStarterPack() + const setUsedStarterPack = useSetUsedStarterPack() + const {setShowLoggedOut} = useLoggedOutViewControls() + + React.useEffect(() => { + if (usedStarterPack && !usedStarterPack.initialFeed) { + setShowLoggedOut(true) + } + }, [usedStarterPack, setUsedStarterPack, setShowLoggedOut]) + if (preferences && pinnedFeedInfos && !isPinnedFeedsLoading) { return (