forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 💫
1import {msg} from '@lingui/core/macro'
2import {useLingui} from '@lingui/react'
3import {Plural, Trans} from '@lingui/react/macro'
4
5import {useSetTitle} from '#/lib/hooks/useSetTitle'
6import {
7 type CommonNavigatorParams,
8 type NativeStackScreenProps,
9} from '#/lib/routes/types'
10import {makeRecordUri} from '#/lib/strings/url-helpers'
11import {usePostQuery} from '#/state/queries/post'
12import {useProfileQuery} from '#/state/queries/profile'
13import {useResolveDidQuery} from '#/state/queries/resolve-uri'
14import {PostRepostedBy as PostRepostedByComponent} from '#/view/com/post-thread/PostRepostedBy'
15import * as Layout from '#/components/Layout'
16
17type Props = NativeStackScreenProps<CommonNavigatorParams, 'PostRepostedBy'>
18export const PostRepostedByScreen = ({route}: Props) => {
19 const {_} = useLingui()
20 const {name, rkey} = route.params
21 const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey)
22 const {data: post} = usePostQuery(uri)
23
24 const {data: resolvedDid} = useResolveDidQuery(name)
25 const {data: profile} = useProfileQuery({did: resolvedDid})
26
27 useSetTitle(profile ? _(msg`Post by @${profile.handle}`) : undefined)
28
29 let quoteCount
30 if (post) {
31 quoteCount = post.repostCount
32 }
33
34 return (
35 <Layout.Screen>
36 <Layout.Header.Outer>
37 <Layout.Header.BackButton />
38 <Layout.Header.Content>
39 {post && (
40 <>
41 <Layout.Header.TitleText>
42 <Trans>Reposted By</Trans>
43 </Layout.Header.TitleText>
44 <Layout.Header.SubtitleText>
45 <Plural
46 value={quoteCount ?? 0}
47 one="# repost"
48 other="# reposts"
49 />
50 </Layout.Header.SubtitleText>
51 </>
52 )}
53 </Layout.Header.Content>
54 <Layout.Header.Slot />
55 </Layout.Header.Outer>
56 <PostRepostedByComponent uri={uri} />
57 </Layout.Screen>
58 )
59}