Bluesky app fork with some witchin' additions 馃挮
at post-text-option 72 lines 2.3 kB view raw
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}