diff options
Diffstat (limited to 'src/view/com/profile/ProfileFollows.tsx')
-rw-r--r-- | src/view/com/profile/ProfileFollows.tsx | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/src/view/com/profile/ProfileFollows.tsx b/src/view/com/profile/ProfileFollows.tsx index d99e2b840..9b447c955 100644 --- a/src/view/com/profile/ProfileFollows.tsx +++ b/src/view/com/profile/ProfileFollows.tsx @@ -1,20 +1,21 @@ import React from 'react' import {AppBskyActorDefs as ActorDefs} from '@atproto/api' -import {List} from '../util/List' -import {ProfileCardWithFollowBtn} from './ProfileCard' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {cleanError} from '#/lib/strings/errors' +import {logger} from '#/logger' import {useProfileFollowsQuery} from '#/state/queries/profile-follows' import {useResolveDidQuery} from '#/state/queries/resolve-uri' -import {logger} from '#/logger' -import {cleanError} from '#/lib/strings/errors' +import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' +import {useSession} from 'state/session' import { ListFooter, ListHeaderDesktop, ListMaybePlaceholder, } from '#/components/Lists' -import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' -import {useSession} from 'state/session' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {List} from '../util/List' +import {ProfileCardWithFollowBtn} from './ProfileCard' function renderItem({item}: {item: ActorDefs.ProfileViewBasic}) { return <ProfileCardWithFollowBtn key={item.did} profile={item} /> @@ -38,7 +39,6 @@ export function ProfileFollows({name}: {name: string}) { const { data, isLoading: isFollowsLoading, - isFetching, isFetchingNextPage, hasNextPage, fetchNextPage, @@ -46,14 +46,8 @@ export function ProfileFollows({name}: {name: string}) { refetch, } = useProfileFollowsQuery(resolvedDid) - const isError = React.useMemo( - () => !!resolveError || !!error, - [resolveError, error], - ) - - const isMe = React.useMemo(() => { - return resolvedDid === currentAccount?.did - }, [resolvedDid, currentAccount?.did]) + const isError = !!resolveError || !!error + const isMe = resolvedDid === currentAccount?.did const follows = React.useMemo(() => { if (data?.pages) { @@ -72,20 +66,19 @@ export function ProfileFollows({name}: {name: string}) { setIsPTRing(false) }, [refetch, setIsPTRing]) - const onEndReached = async () => { - if (isFetching || !hasNextPage || !!error) return + const onEndReached = React.useCallback(async () => { + if (isFetchingNextPage || !hasNextPage || !!error) return try { await fetchNextPage() } catch (err) { logger.error('Failed to load more follows', {error: err}) } - } + }, [error, fetchNextPage, hasNextPage, isFetchingNextPage]) - return ( - <> + if (follows.length < 1) { + return ( <ListMaybePlaceholder isLoading={isDidLoading || isFollowsLoading} - isEmpty={follows.length < 1} isError={isError} emptyType="results" emptyMessage={ @@ -96,23 +89,30 @@ export function ProfileFollows({name}: {name: string}) { errorMessage={cleanError(resolveError || error)} onRetry={isError ? refetch : undefined} /> - {follows.length > 0 && ( - <List - data={follows} - renderItem={renderItem} - keyExtractor={keyExtractor} - refreshing={isPTRing} - onRefresh={onRefresh} - onEndReached={onEndReached} - onEndReachedThreshold={4} - ListHeaderComponent={<ListHeaderDesktop title={_(msg`Following`)} />} - ListFooterComponent={<ListFooter isFetching={isFetchingNextPage} />} - // @ts-ignore our .web version only -prf - desktopFixedHeight - initialNumToRender={initialNumToRender} - windowSize={11} + ) + } + + return ( + <List + data={follows} + renderItem={renderItem} + keyExtractor={keyExtractor} + refreshing={isPTRing} + onRefresh={onRefresh} + onEndReached={onEndReached} + onEndReachedThreshold={4} + ListHeaderComponent={<ListHeaderDesktop title={_(msg`Following`)} />} + ListFooterComponent={ + <ListFooter + isFetchingNextPage={isFetchingNextPage} + error={cleanError(error)} + onRetry={fetchNextPage} /> - )} - </> + } + // @ts-ignore our .web version only -prf + desktopFixedHeight + initialNumToRender={initialNumToRender} + windowSize={11} + /> ) } |