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