More informative empty state for scenes

zio/stable
Paul Frazee 2022-11-09 17:34:55 -06:00
parent e7536289cb
commit ecf56729b0
2 changed files with 38 additions and 2 deletions

View File

@ -139,7 +139,11 @@ export class ProfileUiModel {
} }
async loadMore() { async loadMore() {
if (!this.currentView.isLoading && !this.currentView.hasError) { if (
!this.currentView.isLoading &&
!this.currentView.hasError &&
!this.currentView.isEmpty
) {
await this.currentView.loadMore() await this.currentView.loadMore()
} }
} }

View File

@ -11,6 +11,7 @@ import {ProfileCard} from '../com/profile/ProfileCard'
import {ErrorScreen} from '../com/util/ErrorScreen' import {ErrorScreen} from '../com/util/ErrorScreen'
import {ErrorMessage} from '../com/util/ErrorMessage' import {ErrorMessage} from '../com/util/ErrorMessage'
import {s, colors} from '../lib/styles' import {s, colors} from '../lib/styles'
import {UserGroupIcon} from '../lib/icons'
const LOADING_ITEM = {_reactKey: '__loading__'} const LOADING_ITEM = {_reactKey: '__loading__'}
const END_ITEM = {_reactKey: '__end__'} const END_ITEM = {_reactKey: '__end__'}
@ -111,8 +112,29 @@ export const Profile = observer(({visible, params}: ScreenParams) => {
} }
} else if (uiState.feed.isEmpty) { } else if (uiState.feed.isEmpty) {
items.push(EMPTY_ITEM) items.push(EMPTY_ITEM)
if (uiState.profile.isScene) {
renderItem = () => (
<View style={styles.emptyContainer}>
<View style={{flexDirection: 'row'}}>
<UserGroupIcon
size="64"
style={{
marginLeft: 'auto',
marginRight: 'auto',
color: colors.gray3,
}}
/>
</View>
<Text style={styles.emptyText}>
As members upvote posts, they will trend here. Follow the
scene to see its trending posts in your timeline.
</Text>
</View>
)
} else {
renderItem = () => <Text style={styles.loading}>No posts yet!</Text> renderItem = () => <Text style={styles.loading}>No posts yet!</Text>
} }
}
} else if (uiState.selectedView === Sections.Scenes) { } else if (uiState.selectedView === Sections.Scenes) {
if (uiState.memberships.hasContent) { if (uiState.memberships.hasContent) {
items = uiState.memberships.memberships.slice() items = uiState.memberships.memberships.slice()
@ -197,4 +219,14 @@ const styles = StyleSheet.create({
color: colors.gray5, color: colors.gray5,
textAlign: 'center', textAlign: 'center',
}, },
emptyContainer: {
paddingVertical: 20,
paddingHorizontal: 36,
},
emptyText: {
textAlign: 'center',
color: colors.gray5,
paddingTop: 16,
fontSize: 16,
},
}) })