Merge branch 'demo' into main

This commit is contained in:
Paul Frazee
2025-05-02 10:36:43 -07:00
9 changed files with 349 additions and 29 deletions
+58 -7
View File
@@ -8,28 +8,36 @@ import {useOTAUpdates} from '#/lib/hooks/useOTAUpdates'
import {useSetTitle} from '#/lib/hooks/useSetTitle'
import {useRequestNotificationsPermission} from '#/lib/notifications/notifications'
import {
HomeTabNavigatorParams,
NativeStackScreenProps,
type HomeTabNavigatorParams,
type NativeStackScreenProps,
} from '#/lib/routes/types'
import {logEvent} from '#/lib/statsig/statsig'
import {isWeb} from '#/platform/detection'
import {emitSoftReset} from '#/state/events'
import {SavedFeedSourceInfo, usePinnedFeedsInfos} from '#/state/queries/feed'
import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed'
import {
type SavedFeedSourceInfo,
usePinnedFeedsInfos,
} from '#/state/queries/feed'
import {type FeedDescriptor, type FeedParams} from '#/state/queries/post-feed'
import {usePreferencesQuery} from '#/state/queries/preferences'
import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {type UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {useSession} from '#/state/session'
import {useSetMinimalShellMode} from '#/state/shell'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
import {FeedPage} from '#/view/com/feeds/FeedPage'
import {HomeHeader} from '#/view/com/home/HomeHeader'
import {Pager, PagerRef, RenderTabBarFnProps} from '#/view/com/pager/Pager'
import {
Pager,
type PagerRef,
type RenderTabBarFnProps,
} from '#/view/com/pager/Pager'
import {CustomFeedEmptyState} from '#/view/com/posts/CustomFeedEmptyState'
import {FollowingEmptyState} from '#/view/com/posts/FollowingEmptyState'
import {FollowingEndOfFeed} from '#/view/com/posts/FollowingEndOfFeed'
import {NoFeedsPinned} from '#/screens/Home/NoFeedsPinned'
import * as Layout from '#/components/Layout'
import {useDemoMode} from '#/storage/hooks/demo-mode'
type Props = NativeStackScreenProps<HomeTabNavigatorParams, 'Home' | 'Start'>
export function HomeScreen(props: Props) {
@@ -184,8 +192,22 @@ function HomeScreenReady({
[setMinimalShellMode],
)
const [demoMode] = useDemoMode()
const renderTabBar = React.useCallback(
(props: RenderTabBarFnProps) => {
if (demoMode) {
return (
<HomeHeader
key="FEEDS_TAB_BAR"
{...props}
testID="homeScreenFeedTabs"
onPressSelected={onPressSelected}
// @ts-ignore
feeds={[{displayName: 'Following'}, {displayName: 'Discover'}]}
/>
)
}
return (
<HomeHeader
key="FEEDS_TAB_BAR"
@@ -196,7 +218,7 @@ function HomeScreenReady({
/>
)
},
[onPressSelected, pinnedFeedInfos],
[onPressSelected, pinnedFeedInfos, demoMode],
)
const renderFollowingEmptyState = React.useCallback(() => {
@@ -218,6 +240,35 @@ function HomeScreenReady({
}
}, [preferences])
if (demoMode) {
return (
<Pager
ref={pagerRef}
testID="homeScreen"
onPageSelected={onPageSelected}
onPageScrollStateChanged={onPageScrollStateChanged}
renderTabBar={renderTabBar}
initialPage={selectedIndex}>
<FeedPage
testID="demoFeedPage"
isPageFocused
isPageAdjacent={false}
feed="demo"
renderEmptyState={renderCustomFeedEmptyState}
feedInfo={pinnedFeedInfos[0]}
/>
<FeedPage
testID="customFeedPage"
isPageFocused
isPageAdjacent={false}
feed={`feedgen|${PROD_DEFAULT_FEED('whats-hot')}`}
renderEmptyState={renderCustomFeedEmptyState}
feedInfo={pinnedFeedInfos[0]}
/>
</Pager>
)
}
return hasSession ? (
<Pager
key={allFeeds.join(',')}