diff options
Diffstat (limited to 'src/view/com/posts')
-rw-r--r-- | src/view/com/posts/Feed.tsx | 22 | ||||
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 15 |
2 files changed, 21 insertions, 16 deletions
diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 8d5c11bda..02a3537eb 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -3,7 +3,6 @@ import { ActivityIndicator, AppState, Dimensions, - RefreshControl, StyleProp, StyleSheet, View, @@ -16,7 +15,6 @@ import {FeedErrorMessage} from './FeedErrorMessage' import {FeedSlice} from './FeedSlice' import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' import {useAnalytics} from 'lib/analytics/analytics' -import {usePalette} from 'lib/hooks/usePalette' import {useTheme} from 'lib/ThemeContext' import {logger} from '#/logger' import { @@ -74,7 +72,6 @@ let Feed = ({ ListHeaderComponent?: () => JSX.Element extraData?: any }): React.ReactNode => { - const pal = usePalette('default') const theme = useTheme() const {track} = useAnalytics() const queryClient = useQueryClient() @@ -98,10 +95,13 @@ let Feed = ({ isFetchingNextPage, fetchNextPage, } = usePostFeedQuery(feed, feedParams, opts) - const isEmpty = !isFetching && !data?.pages[0]?.slices.length if (data?.pages[0]) { lastFetchRef.current = data?.pages[0].fetchedAt } + const isEmpty = React.useMemo( + () => !isFetching && !data?.pages?.some(page => page.slices.length), + [isFetching, data], + ) const checkForNew = React.useCallback(async () => { if (!data?.pages[0] || isFetching || !onHasNew || !enabled) { @@ -294,25 +294,17 @@ let Feed = ({ renderItem={renderItem} ListFooterComponent={FeedFooter} ListHeaderComponent={ListHeaderComponent} - refreshControl={ - <RefreshControl - refreshing={isPTRing} - onRefresh={onRefresh} - tintColor={pal.colors.text} - titleColor={pal.colors.text} - progressViewOffset={headerOffset} - /> - } + refreshing={isPTRing} + onRefresh={onRefresh} + headerOffset={headerOffset} contentContainerStyle={{ minHeight: Dimensions.get('window').height * 1.5, }} - style={{paddingTop: headerOffset}} onScrolledDownChange={onScrolledDownChange} indicatorStyle={theme.colorScheme === 'dark' ? 'white' : 'black'} onEndReached={onEndReached} onEndReachedThreshold={2} // number of posts left to trigger load more removeClippedSubviews={true} - contentOffset={{x: 0, y: headerOffset * -1}} extraData={extraData} // @ts-ignore our .web version only -prf desktopFixedHeight={ diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 20d199745..942d7bf71 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -34,6 +34,7 @@ import {countLines} from 'lib/strings/helpers' import {useComposerControls} from '#/state/shell/composer' import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow' import {FeedNameText} from '../util/FeedInfoText' +import {useSession} from '#/state/session' export function FeedItem({ post, @@ -102,10 +103,14 @@ let FeedItemInner = ({ }): React.ReactNode => { const {openComposer} = useComposerControls() const pal = usePalette('default') + const {currentAccount} = useSession() const href = useMemo(() => { const urip = new AtUri(post.uri) return makeProfileLink(post.author, 'post', urip.rkey) }, [post.uri, post.author]) + const isModeratedPost = + moderation.decisions.post.cause?.type === 'label' && + moderation.decisions.post.cause.label.src !== currentAccount?.did const replyAuthorDid = useMemo(() => { if (!record?.reply) { @@ -284,7 +289,14 @@ let FeedItemInner = ({ postEmbed={post.embed} postAuthor={post.author} /> - <PostCtrls post={post} record={record} onPressReply={onPressReply} /> + <PostCtrls + post={post} + record={record} + onPressReply={onPressReply} + showAppealLabelItem={ + post.author.did === currentAccount?.did && isModeratedPost + } + /> </View> </View> </Link> @@ -364,6 +376,7 @@ const styles = StyleSheet.create({ borderTopWidth: 1, paddingLeft: 10, paddingRight: 15, + // @ts-ignore web only -prf cursor: 'pointer', overflow: 'hidden', }, |