Migrate Feeds screen

This commit is contained in:
Eric Bailey
2024-04-22 17:15:58 -05:00
parent f9d8370a30
commit 38445349f0
+23 -67
View File
@@ -13,7 +13,6 @@ import {useLingui} from '@lingui/react'
import {useFocusEffect} from '@react-navigation/native' import {useFocusEffect} from '@react-navigation/native'
import debounce from 'lodash.debounce' import debounce from 'lodash.debounce'
import {useGate} from '#/lib/statsig/statsig'
import {isNative, isWeb} from '#/platform/detection' import {isNative, isWeb} from '#/platform/detection'
import { import {
getAvatarTypeFromUri, getAvatarTypeFromUri,
@@ -151,7 +150,6 @@ export function FeedsScreen(_props: Props) {
const {hasSession} = useSession() const {hasSession} = useSession()
const listRef = React.useRef<FlatList>(null) const listRef = React.useRef<FlatList>(null)
const searchInputRef = React.useRef<SearchInputRef>(null) const searchInputRef = React.useRef<SearchInputRef>(null)
const gate = useGate()
/** /**
* A search query is present. We may not have search results yet. * A search query is present. We may not have search results yet.
@@ -231,57 +229,34 @@ export function FeedsScreen(_props: Props) {
error: cleanError(preferencesError.toString()), error: cleanError(preferencesError.toString()),
}) })
} else { } else {
if (isPreferencesLoading || !preferences?.feeds?.saved) { if (isPreferencesLoading || !preferences?.savedFeeds?.length) {
slices.push({ slices.push({
key: 'savedFeedsLoading', key: 'savedFeedsLoading',
type: 'savedFeedsLoading', type: 'savedFeedsLoading',
// pendingItems: this.rootStore.preferences.savedFeeds.length || 3, // pendingItems: this.rootStore.preferences.savedFeeds.length || 3,
}) })
} else { } else {
const isPrimaryAlgoExperimentEnabled = gate( if (preferences.savedFeeds?.length) {
'reduced_onboarding_and_home_algo',
)
const primaryAlgo = preferences.primaryAlgorithm
if (
isPrimaryAlgoExperimentEnabled &&
primaryAlgo?.enabled &&
primaryAlgo?.uri
) {
slices = slices.concat({
key: `savedFeed:${primaryAlgo?.uri}`,
type: 'savedFeed',
feedUri: primaryAlgo?.uri,
})
}
if (preferences?.feeds?.saved.length !== 0) {
const {saved, pinned} = preferences.feeds
slices = slices.concat( slices = slices.concat(
pinned preferences.savedFeeds
.filter(uri => { .filter(f => {
return !( return f.pinned
isPrimaryAlgoExperimentEnabled &&
primaryAlgo?.enabled &&
primaryAlgo?.uri &&
uri === primaryAlgo?.uri
)
}) })
.map(uri => ({ .map(feed => ({
key: `savedFeed:${uri}`, key: `savedFeed:${feed.value}`,
type: 'savedFeed', type: 'savedFeed',
feedUri: uri, feedUri: feed.value,
})), })),
) )
slices = slices.concat( slices = slices.concat(
saved preferences.savedFeeds
.filter(uri => !pinned.includes(uri)) .filter(f => {
.map(uri => ({ return !f.pinned
key: `savedFeed:${uri}`, })
.map(feed => ({
key: `savedFeed:${feed.value}`,
type: 'savedFeed', type: 'savedFeed',
feedUri: uri, feedUri: feed.value,
})), })),
) )
} }
@@ -351,17 +326,12 @@ export function FeedsScreen(_props: Props) {
) { ) {
return false return false
} }
const isPrimaryAlgoExperimentEnabled = gate( const alreadySaved = Boolean(
'reduced_onboarding_and_home_algo', preferences?.savedFeeds?.find(f => {
) return f.value === feed.uri
const isPrimaryAlgo = }),
isPrimaryAlgoExperimentEnabled &&
preferences?.primaryAlgorithm?.enabled &&
preferences?.primaryAlgorithm?.uri === feed.uri
return (
!preferences?.feeds?.saved.includes(feed.uri) &&
!isPrimaryAlgo
) )
return !alreadySaved
}) })
.map(feed => ({ .map(feed => ({
key: `popularFeed:${feed.uri}`, key: `popularFeed:${feed.uri}`,
@@ -396,7 +366,6 @@ export function FeedsScreen(_props: Props) {
isSearchPending, isSearchPending,
searchError, searchError,
isUserSearching, isUserSearching,
gate,
]) ])
const renderHeaderBtn = React.useCallback(() => { const renderHeaderBtn = React.useCallback(() => {
@@ -502,7 +471,7 @@ export function FeedsScreen(_props: Props) {
</View> </View>
</View> </View>
)} )}
{preferences?.feeds?.saved?.length !== 0 && <FeedsSavedHeader />} {preferences?.savedFeeds?.length !== 0 && <FeedsSavedHeader />}
</> </>
) )
} else if (item.type === 'savedFeedNoResults') { } else if (item.type === 'savedFeedNoResults') {
@@ -518,18 +487,7 @@ export function FeedsScreen(_props: Props) {
</View> </View>
) )
} else if (item.type === 'savedFeed') { } else if (item.type === 'savedFeed') {
const isPrimaryAlgoExperimentEnabled = gate( return <SavedFeed feedUri={item.feedUri} />
'reduced_onboarding_and_home_algo',
)
const primaryAlgo = preferences?.primaryAlgorithm
const isPrimaryAlgo =
isPrimaryAlgoExperimentEnabled &&
primaryAlgo?.enabled &&
primaryAlgo?.uri === item.feedUri
return (
<SavedFeed feedUri={item.feedUri} isPrimaryAlgo={isPrimaryAlgo} />
)
} else if (item.type === 'popularFeedsHeader') { } else if (item.type === 'popularFeedsHeader') {
return ( return (
<> <>
@@ -582,15 +540,13 @@ export function FeedsScreen(_props: Props) {
pal.icon, pal.icon,
pal.textLight, pal.textLight,
_, _,
preferences?.primaryAlgorithm, preferences?.savedFeeds?.length,
preferences?.feeds?.saved?.length,
query, query,
onChangeQuery, onChangeQuery,
onPressCancelSearch, onPressCancelSearch,
onSubmitQuery, onSubmitQuery,
onChangeSearchFocus, onChangeSearchFocus,
hasSession, hasSession,
gate,
], ],
) )