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 {useTerminology} from '#/lib/hooks/useTerminology'
8import {
9 type CommonNavigatorParams,
10 type NativeStackScreenProps,
11} from '#/lib/routes/types'
12import {makeRecordUri} from '#/lib/strings/url-helpers'
13import {usePostQuery} from '#/state/queries/post'
14import {useProfileQuery} from '#/state/queries/profile'
15import {useResolveDidQuery} from '#/state/queries/resolve-uri'
16import {useSetMinimalShellMode} from '#/state/shell'
17import {PostQuotes as PostQuotesComponent} from '#/view/com/post-thread/PostQuotes'
18import * as Layout from '#/components/Layout'
19
20type Props = NativeStackScreenProps<CommonNavigatorParams, 'PostQuotes'>
21export const PostQuotesScreen = ({route}: Props) => {
22 const {_} = useLingui()
23 const setMinimalShellMode = useSetMinimalShellMode()
24 const terminology = useTerminology()
25 const {name, rkey} = route.params
26 const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey)
27 const {data: post} = usePostQuery(uri)
28
29 const {data: resolvedDid} = useResolveDidQuery(name)
30 const {data: profile} = useProfileQuery({did: resolvedDid})
31
32 useSetTitle(
33 profile ? `${_(terminology.post)} ${_(msg`by`)} @${profile.handle}` : undefined,
34 )
35
36 let quoteCount
37 if (post) {
38 quoteCount = post.quoteCount
39 }
40
41 useFocusEffect(
42 React.useCallback(() => {
43 setMinimalShellMode(false)
44 }, [setMinimalShellMode]),
45 )
46
47 return (
48 <Layout.Screen>
49 <Layout.Header.Outer>
50 <Layout.Header.BackButton />
51 <Layout.Header.Content>
52 {post && (
53 <>
54 <Layout.Header.TitleText>
55 <Trans>Quotes</Trans>
56 </Layout.Header.TitleText>
57 <Layout.Header.SubtitleText>
58 <Plural
59 value={quoteCount ?? 0}
60 one="# quote"
61 other="# quotes"
62 />
63 </Layout.Header.SubtitleText>
64 </>
65 )}
66 </Layout.Header.Content>
67 <Layout.Header.Slot />
68 </Layout.Header.Outer>
69 <PostQuotesComponent uri={uri} />
70 </Layout.Screen>
71 )
72}