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