mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import React from 'react'
2import {Plural} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
4
5import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
6import {sanitizeDisplayName} from '#/lib/strings/display-names'
7import {useProfileQuery} from '#/state/queries/profile'
8import {useResolveDidQuery} from '#/state/queries/resolve-uri'
9import {useSetMinimalShellMode} from '#/state/shell'
10import {ProfileFollowers as ProfileFollowersComponent} from '#/view/com/profile/ProfileFollowers'
11import * as Layout from '#/components/Layout'
12
13type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFollowers'>
14export const ProfileFollowersScreen = ({route}: Props) => {
15 const {name} = route.params
16 const setMinimalShellMode = useSetMinimalShellMode()
17
18 const {data: resolvedDid} = useResolveDidQuery(name)
19 const {data: profile} = useProfileQuery({
20 did: resolvedDid,
21 })
22
23 useFocusEffect(
24 React.useCallback(() => {
25 setMinimalShellMode(false)
26 }, [setMinimalShellMode]),
27 )
28
29 return (
30 <Layout.Screen testID="profileFollowersScreen">
31 <Layout.Header.Outer>
32 <Layout.Header.BackButton />
33 <Layout.Header.Content>
34 {profile && (
35 <>
36 <Layout.Header.TitleText>
37 {sanitizeDisplayName(profile.displayName || profile.handle)}
38 </Layout.Header.TitleText>
39 <Layout.Header.SubtitleText>
40 <Plural
41 value={profile.followersCount ?? 0}
42 one="# follower"
43 other="# followers"
44 />
45 </Layout.Header.SubtitleText>
46 </>
47 )}
48 </Layout.Header.Content>
49 <Layout.Header.Slot />
50 </Layout.Header.Outer>
51 <ProfileFollowersComponent name={name} />
52 </Layout.Screen>
53 )
54}