Add liked-by and reposted-by views

This commit is contained in:
Paul Frazee 2022-07-22 12:32:52 -05:00
parent 0ec0ba996f
commit ce83648f9d
12 changed files with 704 additions and 12 deletions

View file

@ -0,0 +1,38 @@
import React, {useLayoutEffect} from 'react'
import {TouchableOpacity} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {makeRecordUri} from '../../lib/strings'
import {Shell} from '../../shell'
import type {RootTabsScreenProps} from '../../routes/types'
import {PostLikedBy as PostLikedByComponent} from '../../com/post-thread/PostLikedBy'
export const PostLikedBy = ({
navigation,
route,
}: RootTabsScreenProps<'PostLikedBy'>) => {
const {name, recordKey} = route.params
const uri = makeRecordUri(name, 'blueskyweb.xyz:Posts', recordKey)
useLayoutEffect(() => {
navigation.setOptions({
headerShown: true,
headerTitle: 'Liked By',
headerLeft: () => (
<TouchableOpacity onPress={() => navigation.goBack()}>
<FontAwesomeIcon icon="arrow-left" />
</TouchableOpacity>
),
})
}, [navigation])
const onNavigateContent = (screen: string, props: Record<string, string>) => {
// @ts-ignore it's up to the callers to supply correct params -prf
navigation.push(screen, props)
}
return (
<Shell>
<PostLikedByComponent uri={uri} onNavigateContent={onNavigateContent} />
</Shell>
)
}

View file

@ -0,0 +1,41 @@
import React, {useLayoutEffect} from 'react'
import {TouchableOpacity} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {makeRecordUri} from '../../lib/strings'
import {Shell} from '../../shell'
import type {RootTabsScreenProps} from '../../routes/types'
import {PostRepostedBy as PostRepostedByComponent} from '../../com/post-thread/PostRepostedBy'
export const PostRepostedBy = ({
navigation,
route,
}: RootTabsScreenProps<'PostRepostedBy'>) => {
const {name, recordKey} = route.params
const uri = makeRecordUri(name, 'blueskyweb.xyz:Posts', recordKey)
useLayoutEffect(() => {
navigation.setOptions({
headerShown: true,
headerTitle: 'Reposted By',
headerLeft: () => (
<TouchableOpacity onPress={() => navigation.goBack()}>
<FontAwesomeIcon icon="arrow-left" />
</TouchableOpacity>
),
})
}, [navigation])
const onNavigateContent = (screen: string, props: Record<string, string>) => {
// @ts-ignore it's up to the callers to supply correct params -prf
navigation.push(screen, props)
}
return (
<Shell>
<PostRepostedByComponent
uri={uri}
onNavigateContent={onNavigateContent}
/>
</Shell>
)
}

View file

@ -1,7 +1,7 @@
import React, {useLayoutEffect} from 'react'
import {TouchableOpacity} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {AdxUri} from '@adxp/mock-api'
import {makeRecordUri} from '../../lib/strings'
import {Shell} from '../../shell'
import type {RootTabsScreenProps} from '../../routes/types'
import {PostThread as PostThreadComponent} from '../../com/post-thread/PostThread'
@ -11,12 +11,7 @@ export const PostThread = ({
route,
}: RootTabsScreenProps<'PostThread'>) => {
const {name, recordKey} = route.params
const urip = new AdxUri(`adx://todo/`)
urip.host = name
urip.collection = 'blueskyweb.xyz:Posts'
urip.recordKey = recordKey
const uri = urip.toString()
const uri = makeRecordUri(name, 'blueskyweb.xyz:Posts', recordKey)
useLayoutEffect(() => {
navigation.setOptions({