diff options
Diffstat (limited to 'src/view/com')
-rw-r--r-- | src/view/com/notifications/Feed.tsx | 5 | ||||
-rw-r--r-- | src/view/com/posts/Feed.tsx | 7 | ||||
-rw-r--r-- | src/view/com/util/EmptyState.tsx | 50 |
3 files changed, 56 insertions, 6 deletions
diff --git a/src/view/com/notifications/Feed.tsx b/src/view/com/notifications/Feed.tsx index 2b7bb878f..ac56823f6 100644 --- a/src/view/com/notifications/Feed.tsx +++ b/src/view/com/notifications/Feed.tsx @@ -7,6 +7,7 @@ import { } from '../../../state/models/notifications-view' import {FeedItem} from './FeedItem' import {ErrorMessage} from '../util/ErrorMessage' +import {EmptyState} from '../util/EmptyState' export const Feed = observer(function Feed({ view, @@ -51,7 +52,9 @@ export const Feed = observer(function Feed({ onEndReached={onEndReached} /> )} - {view.isEmpty && <Text>This feed is empty!</Text>} + {view.isEmpty && ( + <EmptyState icon="bell" message="No notifications yet!" /> + )} </View> ) }) diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 75b48fad8..c2aabd7b7 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -1,6 +1,7 @@ import React, {MutableRefObject} from 'react' import {observer} from 'mobx-react-lite' import {Text, View, FlatList, StyleProp, ViewStyle} from 'react-native' +import {EmptyState} from '../util/EmptyState' import {ErrorMessage} from '../util/ErrorMessage' import {FeedModel, FeedItemModel} from '../../../state/models/feed-view' import {FeedItem} from './FeedItem' @@ -51,11 +52,7 @@ export const Feed = observer(function Feed({ onEndReached={onEndReached} /> )} - {feed.isEmpty && !feed.hasError && ( - <View> - <Text>This feed is empty!</Text> - </View> - )} + {feed.isEmpty && <EmptyState icon="bars" message="This feed is empty!" />} </View> ) }) diff --git a/src/view/com/util/EmptyState.tsx b/src/view/com/util/EmptyState.tsx new file mode 100644 index 000000000..adae9e314 --- /dev/null +++ b/src/view/com/util/EmptyState.tsx @@ -0,0 +1,50 @@ +import React from 'react' +import {StyleProp, StyleSheet, Text, View, ViewStyle} from 'react-native' +import {IconProp} from '@fortawesome/fontawesome-svg-core' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {UserGroupIcon} from '../../lib/icons' +import {colors} from '../../lib/styles' + +export function EmptyState({ + icon, + message, + style, +}: { + icon: IconProp | 'user-group' + message: string + style?: StyleProp<ViewStyle> +}) { + return ( + <View style={[styles.container, style]}> + <View style={styles.iconContainer}> + {icon === 'user-group' ? ( + <UserGroupIcon size="64" style={styles.icon} /> + ) : ( + <FontAwesomeIcon icon={icon} size={64} style={styles.icon} /> + )} + </View> + <Text style={styles.text}>{message}</Text> + </View> + ) +} + +const styles = StyleSheet.create({ + container: { + paddingVertical: 20, + paddingHorizontal: 36, + }, + iconContainer: { + flexDirection: 'row', + }, + icon: { + marginLeft: 'auto', + marginRight: 'auto', + color: colors.gray3, + }, + text: { + textAlign: 'center', + color: colors.gray5, + paddingTop: 16, + fontSize: 16, + }, +}) |