add empty view to CustomAlgorithms screen

zio/stable
Ansh Nanda 2023-05-14 15:38:38 -07:00
parent 8948118d5c
commit 6105314f15
2 changed files with 43 additions and 34 deletions

View File

@ -11,6 +11,7 @@ import {AlgoItemModel} from 'state/models/feeds/algo/algo-item'
const AlgoItem = observer(
({item, style}: {item: AlgoItemModel; style?: StyleProp<ViewStyle>}) => {
const pal = usePalette('default')
return (
<View style={[styles.container, style]} key={item.data.uri}>
<View style={[styles.headerContainer]}>
@ -19,7 +20,7 @@ const AlgoItem = observer(
</View>
<View style={[styles.headerTextContainer]}>
<Text style={[pal.text, s.bold]}>
{item.data.displayName ?? 'Feed name'}
{item.data.displayName ? item.data.displayName : 'Feed name'}
</Text>
<Text style={[pal.textLight, styles.description]}>
{item.data.description ??

View File

@ -44,45 +44,46 @@ const CustomAlgorithms = withAuthRequired(
)
return (
<CenteredView style={{flex: 1}}>
<CenteredView style={[s.flex1]}>
<ViewHeader title="Custom Algorithms" showOnDesktop />
{!savedFeeds.hasContent || savedFeeds.isEmpty ? (
<View style={[pal.border, !isDesktopWeb && s.flex1]}>
<View style={[pal.viewLight]}>
<FlatList
style={[!isDesktopWeb && s.flex1]}
data={savedFeeds.feeds}
keyExtractor={item => item.data.uri}
refreshControl={
<RefreshControl
refreshing={savedFeeds.isRefreshing}
onRefresh={() => savedFeeds.refresh()}
tintColor={pal.colors.text}
titleColor={pal.colors.text}
/>
}
onEndReached={() => savedFeeds.loadMore()}
renderItem={({item}) => <AlgoItem key={item.data.uri} item={item} />}
initialNumToRender={15}
ListFooterComponent={() => (
<View style={styles.footer}>
{savedFeeds.isLoading && <ActivityIndicator />}
</View>
)}
ListEmptyComponent={() => (
<View
style={[
pal.border,
!isDesktopWeb && s.flex1,
pal.viewLight,
styles.empty,
]}>
<Text type="lg" style={[pal.text]}>
You don't have any saved feeds. To save a feed, click the save
button when a custom feed or algorithm shows up.
</Text>
</View>
</View>
) : (
<FlatList
style={[!isDesktopWeb && s.flex1]}
data={savedFeeds.feeds}
keyExtractor={item => item.data.uri}
refreshControl={
<RefreshControl
refreshing={savedFeeds.isRefreshing}
onRefresh={() => savedFeeds.refresh()}
tintColor={pal.colors.text}
titleColor={pal.colors.text}
/>
}
onEndReached={() => savedFeeds.loadMore()}
renderItem={({item}) => (
<AlgoItem key={item.data.uri} item={item} />
)}
initialNumToRender={15}
ListFooterComponent={() => (
<View style={styles.footer}>
{savedFeeds.isLoading && <ActivityIndicator />}
</View>
)}
extraData={savedFeeds.isLoading}
// @ts-ignore our .web version only -prf
desktopFixedHeight
/>
)}
)}
extraData={savedFeeds.isLoading}
// @ts-ignore our .web version only -prf
desktopFixedHeight
/>
</CenteredView>
)
}),
@ -94,4 +95,11 @@ const styles = StyleSheet.create({
footer: {
paddingVertical: 20,
},
empty: {
paddingHorizontal: 20,
paddingVertical: 20,
borderRadius: 16,
marginHorizontal: 24,
marginTop: 10,
},
})