Bluesky app fork with some witchin' additions 馃挮
at linkat-integration 68 lines 2.2 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 { 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}