forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import React from 'react'
2import {msg} from '@lingui/core/macro'
3import {useLingui} from '@lingui/react'
4import {Plural} from '@lingui/react/macro'
5import {useFocusEffect} from '@react-navigation/native'
6
7import {useSetTitle} from '#/lib/hooks/useSetTitle'
8import {
9 type CommonNavigatorParams,
10 type NativeStackScreenProps,
11} from '#/lib/routes/types'
12import {sanitizeDisplayName} from '#/lib/strings/display-names'
13import {useProfileQuery} from '#/state/queries/profile'
14import {useResolveDidQuery} from '#/state/queries/resolve-uri'
15import {useSetMinimalShellMode} from '#/state/shell'
16import {ProfileFollows as ProfileFollowsComponent} from '#/view/com/profile/ProfileFollows'
17import * as Layout from '#/components/Layout'
18
19type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFollows'>
20export const ProfileFollowsScreen = ({route}: Props) => {
21 const {name} = route.params
22 const {_} = useLingui()
23 const setMinimalShellMode = useSetMinimalShellMode()
24
25 const {data: resolvedDid} = useResolveDidQuery(name)
26 const {data: profile} = useProfileQuery({
27 did: resolvedDid,
28 })
29
30 useSetTitle(
31 profile ? _(msg`People followed by @${profile.handle}`) : undefined,
32 )
33
34 useFocusEffect(
35 React.useCallback(() => {
36 setMinimalShellMode(false)
37 }, [setMinimalShellMode]),
38 )
39
40 return (
41 <Layout.Screen testID="profileFollowsScreen">
42 <Layout.Header.Outer>
43 <Layout.Header.BackButton />
44 <Layout.Header.Content>
45 {profile && (
46 <>
47 <Layout.Header.TitleText>
48 {sanitizeDisplayName(profile.displayName || profile.handle)}
49 </Layout.Header.TitleText>
50 <Layout.Header.SubtitleText>
51 <Plural
52 value={profile.followsCount ?? 0}
53 one="# following"
54 other="# following"
55 />
56 </Layout.Header.SubtitleText>
57 </>
58 )}
59 </Layout.Header.Content>
60 <Layout.Header.Slot />
61 </Layout.Header.Outer>
62 <ProfileFollowsComponent name={name} />
63 </Layout.Screen>
64 )
65}