diff --git a/src/app/AppRegistry.tsx b/src/app/AppRegistry.tsx index 4041f5db844..8e41e5b4e14 100644 --- a/src/app/AppRegistry.tsx +++ b/src/app/AppRegistry.tsx @@ -8,7 +8,6 @@ import { WorksForYouScreenQuery, } from "app/Components/Containers/WorksForYou" import { FadeIn } from "app/Components/FadeIn" -import { ArtsyNativeModule } from "app/NativeModules/ArtsyNativeModule" import { ActivityItemScreenQueryRenderer } from "app/Scenes/Activity/ActivityItemScreen" import { ArtQuiz } from "app/Scenes/ArtQuiz/ArtQuiz" import { ArtQuizResults } from "app/Scenes/ArtQuiz/ArtQuizResults/ArtQuizResults" @@ -143,7 +142,7 @@ import { ViewingRoomsListScreen, viewingRoomsListScreenQuery, } from "./Scenes/ViewingRoom/ViewingRoomsList" -import { GlobalStore, unsafe_getFeatureFlag } from "./store/GlobalStore" +import { GlobalStore } from "./store/GlobalStore" import { propsStore } from "./store/PropsStore" import { DevMenu } from "./system/devTools/DevMenu/DevMenu" import { Schema, screenTrack } from "./utils/track" @@ -499,8 +498,7 @@ export const modules = defineModules({ screenOptions: { statusBarTranslucent: true, }, - fullBleed: - ArtsyNativeModule.isBetaOrDev && !unsafe_getFeatureFlag("ARPreferLegacyHomeScreen"), + fullBleed: true, }, [homeViewScreenQuery] ), diff --git a/src/app/Scenes/Home/Home.tsx b/src/app/Scenes/Home/Home.tsx index 45f9990ef2b..2502ee23a11 100644 --- a/src/app/Scenes/Home/Home.tsx +++ b/src/app/Scenes/Home/Home.tsx @@ -4,6 +4,7 @@ import { Box, Flex, Join, + Screen, Spacer, SpacingUnitDSValueNumber, } from "@artsy/palette-mobile" @@ -85,6 +86,7 @@ import { ViewabilityConfig, } from "react-native" import { isTablet } from "react-native-device-info" +import { useSafeAreaInsets } from "react-native-safe-area-context" import { Environment, RelayRefetchProp, createRefetchContainer, graphql } from "react-relay" import { useTracking } from "react-tracking" import { HeroUnitsRail } from "./Components/HeroUnitsRail" @@ -134,6 +136,7 @@ const Home = memo((props: HomeProps) => { useMaybePromptForReview({ contextModule: ContextModule.tabBar, contextOwnerType: OwnerType.home }) const prefetchUrl = usePrefetch() const tracking = useTracking() + const { top } = useSafeAreaInsets() const viewabilityConfig = useRef({ // Percent of of the item that is visible for a partially occluded item to count as "viewable" @@ -353,7 +356,7 @@ const Home = memo((props: HomeProps) => { ) return ( - + listRef={flatlistRef} testID="home-flat-list" @@ -634,8 +637,10 @@ const HomePlaceholder: React.FC = () => { const randomValue = useMemoizedRandom() const enableLatestActivityRail = useFeatureFlag("AREnableLatestActivityRail") + const { top } = useSafeAreaInsets() + return ( - + @@ -764,89 +769,94 @@ export const HomeQueryRenderer: React.FC = ({ environment }) => { }, [flash_message]) return ( - - environment={environment || getRelayEnvironment()} - above={{ - query: graphql` - query HomeAboveTheFoldQuery($version: String!) { - homePage @optionalField { - ...Home_homePageAbove - } - me @optionalField { - ...Home_meAbove - } - newWorksForYou: viewer @optionalField { - ...Home_newWorksForYou - } - notificationsConnection: viewer @optionalField { - ...Home_notificationsConnection - } - viewer { - ...Home_heroUnits - } - } - `, - variables: { - version: worksForYouRecommendationsModel.payload || DEFAULT_RECS_MODEL_VERSION, - }, - }} - below={{ - query: graphql` - query HomeBelowTheFoldQuery { - homePage @optionalField { - ...Home_homePageBelow - } - emergingPicks: marketingCollection(slug: "curators-picks-emerging") @optionalField { - ...Home_emergingPicks - } - featured: viewingRoomsConnection(featured: true) @optionalField { - ...Home_featured - } - me @optionalField { - ...Home_meBelow - ...RecommendedArtistsRail_me - } - articlesConnection(first: 10, sort: PUBLISHED_AT_DESC, featured: true) @optionalField { - ...Home_articlesConnection - } - news: viewer @optionalField { - ...Home_news - } - recommendedAuctionLots: viewer @optionalField { - ...Home_recommendedAuctionLots - } - } - `, - variables: {}, - }} - render={{ - renderComponent: ({ above, below }) => { - if (!above) { - throw new Error("no data") - } + + + + environment={environment || getRelayEnvironment()} + above={{ + query: graphql` + query HomeAboveTheFoldQuery($version: String!) { + homePage @optionalField { + ...Home_homePageAbove + } + me @optionalField { + ...Home_meAbove + } + newWorksForYou: viewer @optionalField { + ...Home_newWorksForYou + } + notificationsConnection: viewer @optionalField { + ...Home_notificationsConnection + } + viewer { + ...Home_heroUnits + } + } + `, + variables: { + version: worksForYouRecommendationsModel.payload || DEFAULT_RECS_MODEL_VERSION, + }, + }} + below={{ + query: graphql` + query HomeBelowTheFoldQuery { + homePage @optionalField { + ...Home_homePageBelow + } + emergingPicks: marketingCollection(slug: "curators-picks-emerging") @optionalField { + ...Home_emergingPicks + } + featured: viewingRoomsConnection(featured: true) @optionalField { + ...Home_featured + } + me @optionalField { + ...Home_meBelow + ...RecommendedArtistsRail_me + } + articlesConnection(first: 10, sort: PUBLISHED_AT_DESC, featured: true) + @optionalField { + ...Home_articlesConnection + } + news: viewer @optionalField { + ...Home_news + } + recommendedAuctionLots: viewer @optionalField { + ...Home_recommendedAuctionLots + } + } + `, + variables: {}, + }} + render={{ + renderComponent: ({ above, below }) => { + if (!above) { + throw new Error("no data") + } - return ( - - ) - }, - renderPlaceholder: () => , - }} - cacheConfig={{ force: true }} - belowTheFoldTimeout={100} - /> + return ( + + ) + }, + renderPlaceholder: () => , + }} + cacheConfig={{ force: true }} + belowTheFoldTimeout={100} + /> + + ) } diff --git a/src/app/Scenes/Home/HomeContainer.tests.tsx b/src/app/Scenes/Home/HomeContainer.tests.tsx index 4e5fbca3fa9..c0f9a866c16 100644 --- a/src/app/Scenes/Home/HomeContainer.tests.tsx +++ b/src/app/Scenes/Home/HomeContainer.tests.tsx @@ -69,4 +69,21 @@ describe("conditional rendering of old vs new home screen", () => { }) }) }) + + describe("when using an artsymail account", () => { + beforeEach(() => { + __globalStoreTestUtils__?.injectFeatureFlags({ ARPreferLegacyHomeScreen: false }) + }) + + it("renders the NEW screen", () => { + __globalStoreTestUtils__?.injectState({ + auth: { + userEmail: "test@artsymail.com", + }, + }) + + renderWithWrappers() + expect(screen.getByTestId("new-home-view-skeleton")).toBeOnTheScreen() + }) + }) }) diff --git a/src/app/Scenes/Home/HomeContainer.tsx b/src/app/Scenes/Home/HomeContainer.tsx index 6333f776d8e..297ca7f1dcb 100644 --- a/src/app/Scenes/Home/HomeContainer.tsx +++ b/src/app/Scenes/Home/HomeContainer.tsx @@ -15,8 +15,10 @@ export const InnerHomeContainer = () => { const showPlayground = useDevToggle("DTShowPlayground") const preferLegacyHomeScreen = useFeatureFlag("ARPreferLegacyHomeScreen") + const isArtsyEmployee = GlobalStore.useAppState((state) => state.auth.userHasArtsyEmail) - const shouldDisplayNewHomeView = ArtsyNativeModule.isBetaOrDev && !preferLegacyHomeScreen + const shouldDisplayNewHomeView = + (isArtsyEmployee || ArtsyNativeModule.isBetaOrDev) && !preferLegacyHomeScreen const navigateToArtQuiz = async () => { await navigate("/art-quiz")