Handle home algo with backwards compat
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import React from 'react'
|
||||
import {RenderTabBarFnProps} from 'view/com/pager/Pager'
|
||||
import {HomeHeaderLayout} from './HomeHeaderLayout'
|
||||
import {FeedSourceInfo} from '#/state/queries/feed'
|
||||
import {useNavigation} from '@react-navigation/native'
|
||||
|
||||
import {usePalette} from '#/lib/hooks/usePalette'
|
||||
import {FeedSourceInfo} from '#/state/queries/feed'
|
||||
import {NavigationProp} from 'lib/routes/types'
|
||||
import {isWeb} from 'platform/detection'
|
||||
import {RenderTabBarFnProps} from 'view/com/pager/Pager'
|
||||
import {TabBar} from '../pager/TabBar'
|
||||
import {usePalette} from '#/lib/hooks/usePalette'
|
||||
import {HomeHeaderLayout} from './HomeHeaderLayout'
|
||||
|
||||
export function HomeHeader(
|
||||
props: RenderTabBarFnProps & {
|
||||
@@ -20,7 +21,9 @@ export function HomeHeader(
|
||||
const pal = usePalette('default')
|
||||
|
||||
const hasPinnedCustom = React.useMemo<boolean>(() => {
|
||||
return feeds.some(tab => tab.uri !== '')
|
||||
return feeds.some(
|
||||
tab => !['home', 'home-algo', 'following'].includes(tab.uri),
|
||||
)
|
||||
}, [feeds])
|
||||
|
||||
const items = React.useMemo(() => {
|
||||
|
||||
+32
-13
@@ -53,19 +53,34 @@ function HomeScreenReady({
|
||||
pinnedFeedInfos: FeedSourceInfo[]
|
||||
}) {
|
||||
useOTAUpdates()
|
||||
const isHomeAlgoExperimentEnabled = useGate(
|
||||
'reduced_onboarding_and_home_algo',
|
||||
)
|
||||
|
||||
const allFeeds = React.useMemo(() => {
|
||||
const feeds: FeedDescriptor[] = []
|
||||
feeds.push('home')
|
||||
for (const {uri} of pinnedFeedInfos) {
|
||||
if (uri.includes('app.bsky.feed.generator')) {
|
||||
feeds.push(`feedgen|${uri}`)
|
||||
} else if (uri.includes('app.bsky.graph.list')) {
|
||||
feeds.push(`list|${uri}`)
|
||||
} else if (uri === 'home-algo') {
|
||||
// TODO can I ever end up here without a feed?
|
||||
if (
|
||||
isHomeAlgoExperimentEnabled &&
|
||||
preferences.homeAlgo.enabled &&
|
||||
preferences.homeAlgo.uri
|
||||
) {
|
||||
feeds.push(`feedgen|${preferences.homeAlgo.uri}`)
|
||||
}
|
||||
} else if (uri === 'home') {
|
||||
feeds.push('home')
|
||||
} else if (uri === 'following') {
|
||||
feeds.push('following')
|
||||
}
|
||||
}
|
||||
return feeds
|
||||
}, [pinnedFeedInfos])
|
||||
}, [pinnedFeedInfos, isHomeAlgoExperimentEnabled, preferences.homeAlgo])
|
||||
|
||||
const rawSelectedFeed = useSelectedFeed()
|
||||
const setSelectedFeed = useSetSelectedFeed()
|
||||
@@ -186,7 +201,6 @@ function HomeScreenReady({
|
||||
return <CustomFeedEmptyState />
|
||||
}, [])
|
||||
|
||||
const [homeFeed, ...customFeeds] = allFeeds
|
||||
const homeFeedParams = React.useMemo<FeedParams>(() => {
|
||||
return {
|
||||
mergeFeedEnabled: Boolean(preferences.feedViewPrefs.lab_mergeFeedEnabled),
|
||||
@@ -206,16 +220,21 @@ function HomeScreenReady({
|
||||
onPageSelected={onPageSelected}
|
||||
onPageScrollStateChanged={onPageScrollStateChanged}
|
||||
renderTabBar={renderTabBar}>
|
||||
<FeedPage
|
||||
key={homeFeed}
|
||||
testID="followingFeedPage"
|
||||
isPageFocused={selectedFeed === homeFeed}
|
||||
feed={homeFeed}
|
||||
feedParams={homeFeedParams}
|
||||
renderEmptyState={renderFollowingEmptyState}
|
||||
renderEndOfFeed={FollowingEndOfFeed}
|
||||
/>
|
||||
{customFeeds.map(feed => {
|
||||
{allFeeds.map(feed => {
|
||||
if (feed === 'home') {
|
||||
return (
|
||||
<FeedPage
|
||||
key={'home'}
|
||||
testID="followingFeedPage"
|
||||
isPageFocused={selectedFeed === 'home'}
|
||||
feed={'home'}
|
||||
feedParams={homeFeedParams}
|
||||
renderEmptyState={renderFollowingEmptyState}
|
||||
renderEndOfFeed={FollowingEndOfFeed}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<FeedPage
|
||||
key={feed}
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
import React from 'react'
|
||||
import {View, StyleSheet} from 'react-native'
|
||||
import {useNavigationState, useNavigation} from '@react-navigation/native'
|
||||
import {usePalette} from 'lib/hooks/usePalette'
|
||||
import {TextLink} from 'view/com/util/Link'
|
||||
import {getCurrentRoute} from 'lib/routes/helpers'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {StyleSheet, View} from 'react-native'
|
||||
import {msg} from '@lingui/macro'
|
||||
import {usePinnedFeedsInfos} from '#/state/queries/feed'
|
||||
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
|
||||
import {FeedDescriptor} from '#/state/queries/post-feed'
|
||||
import {NavigationProp} from 'lib/routes/types'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useNavigation, useNavigationState} from '@react-navigation/native'
|
||||
|
||||
import {emitSoftReset} from '#/state/events'
|
||||
import {usePinnedFeedsInfos} from '#/state/queries/feed'
|
||||
import {FeedDescriptor} from '#/state/queries/post-feed'
|
||||
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
|
||||
import {usePalette} from 'lib/hooks/usePalette'
|
||||
import {getCurrentRoute} from 'lib/routes/helpers'
|
||||
import {NavigationProp} from 'lib/routes/types'
|
||||
import {TextLink} from 'view/com/util/Link'
|
||||
|
||||
export function DesktopFeeds() {
|
||||
const pal = usePalette('default')
|
||||
@@ -33,8 +34,10 @@ export function DesktopFeeds() {
|
||||
{pinnedFeedInfos.map(feedInfo => {
|
||||
const uri = feedInfo.uri
|
||||
let feed: FeedDescriptor
|
||||
if (!uri) {
|
||||
if (uri === 'home') {
|
||||
feed = 'home'
|
||||
} else if (uri === 'home-algo') {
|
||||
feed = 'home-algo'
|
||||
} else if (uri.includes('app.bsky.feed.generator')) {
|
||||
feed = `feedgen|${uri}`
|
||||
} else if (uri.includes('app.bsky.graph.list')) {
|
||||
|
||||
Reference in New Issue
Block a user