import React, {useCallback, useMemo} from 'react' import { RefreshControl, StyleSheet, View, FlatList, ActivityIndicator, } from 'react-native' import {useFocusEffect} from '@react-navigation/native' import {NativeStackScreenProps} from '@react-navigation/native-stack' import {useAnalytics} from 'lib/analytics' import {usePalette} from 'lib/hooks/usePalette' import {CommonNavigatorParams} from 'lib/routes/types' import {observer} from 'mobx-react-lite' import {useStores} from 'state/index' import {SavedFeedsModel} from 'state/models/feeds/algo/saved' import AlgoItem from 'view/com/algos/AlgoItem' import {withAuthRequired} from 'view/com/auth/withAuthRequired' import {ViewHeader} from 'view/com/util/ViewHeader' import {CenteredView} from 'view/com/util/Views' import {Text} from 'view/com/util/text/Text' import {isDesktopWeb} from 'platform/detection' import {s} from 'lib/styles' type Props = NativeStackScreenProps const CustomAlgorithms = withAuthRequired( observer(({}: Props) => { const pal = usePalette('default') const rootStore = useStores() const {screen} = useAnalytics() const savedFeeds = useMemo( () => new SavedFeedsModel(rootStore), [rootStore], ) useFocusEffect( useCallback(() => { screen('SavedFeeds') rootStore.shell.setMinimalShellMode(false) savedFeeds.refresh() }, [screen, rootStore, savedFeeds]), ) return ( {!savedFeeds.hasContent || savedFeeds.isEmpty ? ( You don't have any saved feeds. To save a feed, click the save button when a custom feed or algorithm shows up. ) : ( item.data.uri} refreshControl={ savedFeeds.refresh()} tintColor={pal.colors.text} titleColor={pal.colors.text} /> } onEndReached={() => savedFeeds.loadMore()} renderItem={({item}) => ( )} initialNumToRender={15} ListFooterComponent={() => ( {savedFeeds.isLoading && } )} extraData={savedFeeds.isLoading} // @ts-ignore our .web version only -prf desktopFixedHeight /> )} ) }), ) export default CustomAlgorithms const styles = StyleSheet.create({ footer: { paddingVertical: 20, }, })