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 | |
parent | c34c67e4dfdfe71040e088d3d7e6e39276f93f6b (diff) | |
download | voidsky-91f9bc7ccbfcfb07434a707e43fb3244e7722d6f.tar.zst |
demo mode
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/screens/Home.tsx | 65 | ||||
-rw-r--r-- | src/view/shell/bottom-bar/BottomBar.tsx | 14 |
2 files changed, 67 insertions, 12 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(',')} diff --git a/src/view/shell/bottom-bar/BottomBar.tsx b/src/view/shell/bottom-bar/BottomBar.tsx index 822547d93..df6a045dc 100644 --- a/src/view/shell/bottom-bar/BottomBar.tsx +++ b/src/view/shell/bottom-bar/BottomBar.tsx @@ -1,13 +1,14 @@ -import React, {ComponentProps} from 'react' -import {GestureResponderEvent, View} from 'react-native' +import React, {type ComponentProps} from 'react' +import {type GestureResponderEvent, View} from 'react-native' import Animated from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {msg, plural, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {BottomTabBarProps} from '@react-navigation/bottom-tabs' +import {type BottomTabBarProps} from '@react-navigation/bottom-tabs' import {StackActions} from '@react-navigation/native' import {PressableScale} from '#/lib/custom-animations/PressableScale' +import {BOTTOM_BAR_AVI} from '#/lib/demo' import {useHaptics} from '#/lib/haptics' import {useDedupe} from '#/lib/hooks/useDedupe' import {useMinimalShellFooterTransform} from '#/lib/hooks/useMinimalShellTransform' @@ -47,6 +48,7 @@ import { Message_Stroke2_Corner0_Rounded as Message, Message_Stroke2_Corner0_Rounded_Filled as MessageFilled, } from '#/components/icons/Message' +import {useDemoMode} from '#/storage/hooks/demo-mode' import {styles} from './BottomBarStyles' type TabOptions = @@ -124,6 +126,8 @@ export function BottomBar({navigation}: BottomTabBarProps) { accountSwitchControl.open() }, [accountSwitchControl, playHaptic]) + const [demoMode] = useDemoMode() + return ( <> <SwitchAccountDialog control={accountSwitchControl} /> @@ -259,7 +263,7 @@ export function BottomBar({navigation}: BottomTabBarProps) { {borderColor: pal.text.color}, ]}> <UserAvatar - avatar={profile?.avatar} + avatar={demoMode ? BOTTOM_BAR_AVI : profile?.avatar} size={iconWidth - 3} // See https://github.com/bluesky-social/social-app/pull/1801: usePlainRNImage={true} @@ -270,7 +274,7 @@ export function BottomBar({navigation}: BottomTabBarProps) { <View style={[styles.ctrlIcon, pal.text, styles.profileIcon]}> <UserAvatar - avatar={profile?.avatar} + avatar={demoMode ? BOTTOM_BAR_AVI : profile?.avatar} size={iconWidth - 3} // See https://github.com/bluesky-social/social-app/pull/1801: usePlainRNImage={true} |