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 {ProfileFollowers as ProfileFollowersComponent} from '#/view/com/profile/ProfileFollowers'
17import * as Layout from '#/components/Layout'
18
19type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFollowers'>
20export const ProfileFollowersScreen = ({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(profile ? _(msg`People following @${profile.handle}`) : undefined)
31
32 useFocusEffect(
33 React.useCallback(() => {
34 setMinimalShellMode(false)
35 }, [setMinimalShellMode]),
36 )
37
38 return (
39 <Layout.Screen testID="profileFollowersScreen">
40 <Layout.Header.Outer>
41 <Layout.Header.BackButton />
42 <Layout.Header.Content>
43 {profile && (
44 <>
45 <Layout.Header.TitleText>
46 {sanitizeDisplayName(profile.displayName || profile.handle)}
47 </Layout.Header.TitleText>
48 <Layout.Header.SubtitleText>
49 <Plural
50 value={profile.followersCount ?? 0}
51 one="# follower"
52 other="# followers"
53 />
54 </Layout.Header.SubtitleText>
55 </>
56 )}
57 </Layout.Header.Content>
58 <Layout.Header.Slot />
59 </Layout.Header.Outer>
60 <ProfileFollowersComponent name={name} />
61 </Layout.Screen>
62 )
63}