import React from 'react' import {ActivityIndicator, FlatList, StyleSheet, View} from 'react-native' import {observer} from 'mobx-react-lite' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {TabletOrDesktop, Mobile} from 'view/com/util/layouts/Breakpoints' import {Text} from 'view/com/util/text/Text' import {ViewHeader} from 'view/com/util/ViewHeader' import {TitleColumnLayout} from 'view/com/util/layouts/TitleColumnLayout' import {Button} from 'view/com/util/forms/Button' import {RecommendedFeedsItem} from './RecommendedFeedsItem' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {usePalette} from 'lib/hooks/usePalette' import {useQuery} from '@tanstack/react-query' import {useStores} from 'state/index' import {CustomFeedModel} from 'state/models/feeds/custom-feed' import {ErrorMessage} from 'view/com/util/error/ErrorMessage' type Props = { next: () => void } export const RecommendedFeeds = observer(function RecommendedFeedsImpl({ next, }: Props) { const store = useStores() const pal = usePalette('default') const {isTabletOrMobile} = useWebMediaQueries() const {isLoading, data: recommendedFeeds} = useQuery({ staleTime: Infinity, // fixed list rn, never refetch queryKey: ['onboarding', 'recommended_feeds'], async queryFn() { try { const { data: {feeds}, success, } = await store.agent.app.bsky.feed.getSuggestedFeeds() if (!success) { return [] } return (feeds.length ? feeds : []).map(feed => { return new CustomFeedModel(store, feed) }) } catch (e) { return [] } }, }) const hasFeeds = recommendedFeeds && recommendedFeeds.length const title = ( <> Choose your Recomended Feeds Feeds are created by users to curate content. Choose some feeds that you find interesting. ) return ( <> {hasFeeds ? ( } keyExtractor={item => item.uri} style={{flex: 1}} /> ) : isLoading ? ( ) : ( )} Check out some recommended feeds. Tap + to add them to your list of pinned feeds. {hasFeeds ? ( } keyExtractor={item => item.uri} style={{flex: 1}} /> ) : isLoading ? ( ) : ( )}