diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-12-18 19:03:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-18 11:03:53 -0800 |
commit | 05c43ed998430fb7d8d2a57bed54f2f24c71dd88 (patch) | |
tree | 250ad95d2147ec8c96628ccd189717e018322a49 /src/view/com/lists/ListMembers.tsx | |
parent | 5c4f870898a7f41c2b7cb554c1b585309ec3d3c9 (diff) | |
download | voidsky-05c43ed998430fb7d8d2a57bed54f2f24c71dd88.tar.zst |
Better list empty state (#7157)
* render header conditionally, use modern footer * move add button to empty state if empty * center align empty state * Tweak add people btn --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/view/com/lists/ListMembers.tsx')
-rw-r--r-- | src/view/com/lists/ListMembers.tsx | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx index cf7bb6b9e..0caae6701 100644 --- a/src/view/com/lists/ListMembers.tsx +++ b/src/view/com/lists/ListMembers.tsx @@ -1,11 +1,5 @@ -import React from 'react' -import { - ActivityIndicator, - Dimensions, - StyleProp, - View, - ViewStyle, -} from 'react-native' +import React, {useCallback} from 'react' +import {Dimensions, StyleProp, View, ViewStyle} from 'react-native' import {AppBskyActorDefs, AppBskyGraphDefs} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' @@ -16,6 +10,7 @@ import {logger} from '#/logger' import {useModalControls} from '#/state/modals' import {useListMembersQuery} from '#/state/queries/list-members' import {useSession} from '#/state/session' +import {ListFooter} from '#/components/Lists' import {ProfileCard} from '../profile/ProfileCard' import {ErrorMessage} from '../util/error/ErrorMessage' import {Button} from '../util/forms/Button' @@ -66,6 +61,7 @@ export function ListMembers({ refetch, fetchNextPage, hasNextPage, + isFetchingNextPage, } = useListMembersQuery(list) const isEmpty = !isFetching && !data?.pages[0].items.length const isOwner = @@ -197,14 +193,17 @@ export function ListMembers({ ], ) - const Footer = React.useCallback( - () => ( - <View style={{paddingTop: 20, paddingBottom: 400}}> - {isFetching && <ActivityIndicator />} - </View> - ), - [isFetching], - ) + const renderFooter = useCallback(() => { + if (isEmpty) return null + return ( + <ListFooter + hasNextPage={hasNextPage} + error={cleanError(error)} + isFetchingNextPage={isFetchingNextPage} + onRetry={fetchNextPage} + /> + ) + }, [hasNextPage, error, isFetchingNextPage, fetchNextPage, isEmpty]) return ( <View testID={testID} style={style}> @@ -214,8 +213,8 @@ export function ListMembers({ data={items} keyExtractor={(item: any) => item.subject?.did || item._reactKey} renderItem={renderItem} - ListHeaderComponent={renderHeader} - ListFooterComponent={Footer} + ListHeaderComponent={!isEmpty ? renderHeader : undefined} + ListFooterComponent={renderFooter} refreshing={isRefreshing} onRefresh={onRefresh} headerOffset={headerOffset} |