diff options
author | Samuel Newman <mozzius@protonmail.com> | 2025-04-22 21:29:27 +0300 |
---|---|---|
committer | Eric Bailey <git@esb.lol> | 2025-04-23 16:36:27 -0500 |
commit | 91f9bc7ccbfcfb07434a707e43fb3244e7722d6f (patch) | |
tree | 48434adcb97eff3a104f77f4fb00fabb9a69250b /src/view/screens | |
parent | c34c67e4dfdfe71040e088d3d7e6e39276f93f6b (diff) | |
download | voidsky-91f9bc7ccbfcfb07434a707e43fb3244e7722d6f.tar.zst |
demo mode
Diffstat (limited to 'src/view/screens')
-rw-r--r-- | src/view/screens/Home.tsx | 65 |
1 files changed, 58 insertions, 7 deletions
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index a6e2595ee..e058e2883 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -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(',')} |