diff options
Diffstat (limited to 'src/view/com/post-thread')
-rw-r--r-- | src/view/com/post-thread/PostLikedBy.tsx | 24 | ||||
-rw-r--r-- | src/view/com/post-thread/PostRepostedBy.tsx | 18 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThread.tsx | 29 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThreadItem.tsx | 33 |
4 files changed, 30 insertions, 74 deletions
diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx index 678e069f6..9b5810b3b 100644 --- a/src/view/com/post-thread/PostLikedBy.tsx +++ b/src/view/com/post-thread/PostLikedBy.tsx @@ -9,7 +9,6 @@ import { TouchableOpacity, View, } from 'react-native' -import {OnNavigateContent} from '../../routes/types' import { LikedByViewModel, LikedByViewItemModel, @@ -18,13 +17,7 @@ import {useStores} from '../../../state' import {s} from '../../lib/styles' import {AVIS} from '../../lib/assets' -export const PostLikedBy = observer(function PostLikedBy({ - uri, - onNavigateContent, -}: { - uri: string - onNavigateContent: OnNavigateContent -}) { +export const PostLikedBy = observer(function PostLikedBy({uri}: {uri: string}) { const store = useStores() const [view, setView] = useState<LikedByViewModel | undefined>() @@ -66,7 +59,7 @@ export const PostLikedBy = observer(function PostLikedBy({ // loaded // = const renderItem = ({item}: {item: LikedByViewItemModel}) => ( - <LikedByItem item={item} onNavigateContent={onNavigateContent} /> + <LikedByItem item={item} /> ) return ( <View> @@ -79,17 +72,10 @@ export const PostLikedBy = observer(function PostLikedBy({ ) }) -const LikedByItem = ({ - item, - onNavigateContent, -}: { - item: LikedByViewItemModel - onNavigateContent: OnNavigateContent -}) => { +const LikedByItem = ({item}: {item: LikedByViewItemModel}) => { + const store = useStores() const onPressOuter = () => { - onNavigateContent('Profile', { - name: item.name, - }) + store.nav.navigate(`/profile/${item.name}`) } return ( <TouchableOpacity style={styles.outer} onPress={onPressOuter}> diff --git a/src/view/com/post-thread/PostRepostedBy.tsx b/src/view/com/post-thread/PostRepostedBy.tsx index 98c24ef86..967e03940 100644 --- a/src/view/com/post-thread/PostRepostedBy.tsx +++ b/src/view/com/post-thread/PostRepostedBy.tsx @@ -9,7 +9,6 @@ import { TouchableOpacity, View, } from 'react-native' -import {OnNavigateContent} from '../../routes/types' import { RepostedByViewModel, RepostedByViewItemModel, @@ -20,10 +19,8 @@ import {AVIS} from '../../lib/assets' export const PostRepostedBy = observer(function PostRepostedBy({ uri, - onNavigateContent, }: { uri: string - onNavigateContent: OnNavigateContent }) { const store = useStores() const [view, setView] = useState<RepostedByViewModel | undefined>() @@ -68,7 +65,7 @@ export const PostRepostedBy = observer(function PostRepostedBy({ // loaded // = const renderItem = ({item}: {item: RepostedByViewItemModel}) => ( - <RepostedByItem item={item} onNavigateContent={onNavigateContent} /> + <RepostedByItem item={item} /> ) return ( <View> @@ -81,17 +78,10 @@ export const PostRepostedBy = observer(function PostRepostedBy({ ) }) -const RepostedByItem = ({ - item, - onNavigateContent, -}: { - item: RepostedByViewItemModel - onNavigateContent: OnNavigateContent -}) => { +const RepostedByItem = ({item}: {item: RepostedByViewItemModel}) => { + const store = useStores() const onPressOuter = () => { - onNavigateContent('Profile', { - name: item.name, - }) + store.nav.navigate(`/profile/${item.name}`) } return ( <TouchableOpacity style={styles.outer} onPress={onPressOuter}> diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx index 6191875c7..f7044b741 100644 --- a/src/view/com/post-thread/PostThread.tsx +++ b/src/view/com/post-thread/PostThread.tsx @@ -1,8 +1,6 @@ import React, {useState, useEffect, useRef} from 'react' import {observer} from 'mobx-react-lite' import {ActivityIndicator, FlatList, Text, View} from 'react-native' -import {useFocusEffect} from '@react-navigation/native' -import {OnNavigateContent} from '../../routes/types' import { PostThreadViewModel, PostThreadViewPostModel, @@ -14,13 +12,7 @@ import {s} from '../../lib/styles' const UPDATE_DELAY = 2e3 // wait 2s before refetching the thread for updates -export const PostThread = observer(function PostThread({ - uri, - onNavigateContent, -}: { - uri: string - onNavigateContent: OnNavigateContent -}) { +export const PostThread = observer(function PostThread({uri}: {uri: string}) { const store = useStores() const [view, setView] = useState<PostThreadViewModel | undefined>() const [lastUpdate, setLastUpdate] = useState<number>(Date.now()) @@ -37,12 +29,13 @@ export const PostThread = observer(function PostThread({ newView.setup().catch(err => console.error('Failed to fetch thread', err)) }, [uri, view?.params.uri, store]) - useFocusEffect(() => { - if (Date.now() - lastUpdate > UPDATE_DELAY) { - view?.update() - setLastUpdate(Date.now()) - } - }) + // TODO + // useFocusEffect(() => { + // if (Date.now() - lastUpdate > UPDATE_DELAY) { + // view?.update() + // setLastUpdate(Date.now()) + // } + // }) const onPressShare = (uri: string) => { shareSheetRef.current?.open(uri) @@ -79,11 +72,7 @@ export const PostThread = observer(function PostThread({ // = const posts = view.thread ? Array.from(flattenThread(view.thread)) : [] const renderItem = ({item}: {item: PostThreadViewPostModel}) => ( - <PostThreadItem - item={item} - onNavigateContent={onNavigateContent} - onPressShare={onPressShare} - /> + <PostThreadItem item={item} onPressShare={onPressShare} /> ) return ( <View style={s.h100pct}> diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index 981aab092..5430c8ef5 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -3,11 +3,11 @@ import {observer} from 'mobx-react-lite' import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native' import {bsky, AdxUri} from '@adxp/mock-api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {OnNavigateContent} from '../../routes/types' import {PostThreadViewPostModel} from '../../../state/models/post-thread-view' import {s} from '../../lib/styles' import {ago, pluralize} from '../../lib/strings' import {AVIS} from '../../lib/assets' +import {useStores} from '../../../state' function iter<T>(n: number, fn: (_i: number) => T): Array<T> { const arr: T[] = [] @@ -19,46 +19,36 @@ function iter<T>(n: number, fn: (_i: number) => T): Array<T> { export const PostThreadItem = observer(function PostThreadItem({ item, - onNavigateContent, onPressShare, }: { item: PostThreadViewPostModel - onNavigateContent: OnNavigateContent onPressShare: (_uri: string) => void }) { + const store = useStores() const record = item.record as unknown as bsky.Post.Record const hasEngagement = item.likeCount || item.repostCount const onPressOuter = () => { const urip = new AdxUri(item.uri) - onNavigateContent('PostThread', { - name: item.author.name, - recordKey: urip.recordKey, - }) + store.nav.navigate(`/profile/${item.author.name}/post/${urip.recordKey}`) } const onPressAuthor = () => { - onNavigateContent('Profile', { - name: item.author.name, - }) + store.nav.navigate(`/profile/${item.author.name}`) } const onPressLikes = () => { const urip = new AdxUri(item.uri) - onNavigateContent('PostLikedBy', { - name: item.author.name, - recordKey: urip.recordKey, - }) + store.nav.navigate( + `/profile/${item.author.name}/post/${urip.recordKey}/liked-by`, + ) } const onPressReposts = () => { const urip = new AdxUri(item.uri) - onNavigateContent('PostRepostedBy', { - name: item.author.name, - recordKey: urip.recordKey, - }) + store.nav.navigate( + `/profile/${item.author.name}/post/${urip.recordKey}/reposted-by`, + ) } const onPressReply = () => { - onNavigateContent('Composer', { - replyTo: item.uri, - }) + store.nav.navigate(`/composer?replyTo=${item.uri}`) } const onPressToggleRepost = () => { item @@ -227,6 +217,7 @@ const styles = StyleSheet.create({ }, postText: { paddingBottom: 5, + fontFamily: 'Helvetica Neue', }, expandedInfo: { flexDirection: 'row', |