diff options
Diffstat (limited to 'src/view/com/util/post-ctrls')
-rw-r--r-- | src/view/com/util/post-ctrls/PostCtrls.tsx | 42 | ||||
-rw-r--r-- | src/view/com/util/post-ctrls/RepostButton.tsx | 8 |
2 files changed, 40 insertions, 10 deletions
diff --git a/src/view/com/util/post-ctrls/PostCtrls.tsx b/src/view/com/util/post-ctrls/PostCtrls.tsx index c0c5d470e..83ea3e8c9 100644 --- a/src/view/com/util/post-ctrls/PostCtrls.tsx +++ b/src/view/com/util/post-ctrls/PostCtrls.tsx @@ -1,4 +1,4 @@ -import React, {useCallback} from 'react' +import React, {memo, useCallback} from 'react' import { StyleProp, StyleSheet, @@ -27,7 +27,7 @@ import {useComposerControls} from '#/state/shell/composer' import {Shadow} from '#/state/cache/types' import {useRequireAuth} from '#/state/session' -export function PostCtrls({ +let PostCtrls = ({ big, post, record, @@ -39,7 +39,7 @@ export function PostCtrls({ record: AppBskyFeedPost.Record style?: StyleProp<ViewStyle> onPressReply: () => void -}) { +}): React.ReactNode => { const theme = useTheme() const {openComposer} = useComposerControls() const {closeModal} = useModalControls() @@ -71,7 +71,14 @@ export function PostCtrls({ likeCount: post.likeCount || 0, }) } - }, [post, postLikeMutation, postUnlikeMutation]) + }, [ + post.viewer?.like, + post.uri, + post.cid, + post.likeCount, + postLikeMutation, + postUnlikeMutation, + ]) const onRepost = useCallback(() => { closeModal() @@ -89,7 +96,15 @@ export function PostCtrls({ repostCount: post.repostCount || 0, }) } - }, [post, closeModal, postRepostMutation, postUnrepostMutation]) + }, [ + post.uri, + post.cid, + post.viewer?.repost, + post.repostCount, + closeModal, + postRepostMutation, + postUnrepostMutation, + ]) const onQuote = useCallback(() => { closeModal() @@ -103,7 +118,16 @@ export function PostCtrls({ }, }) Haptics.default() - }, [post, record, openComposer, closeModal]) + }, [ + post.uri, + post.cid, + post.author, + post.indexedAt, + record.text, + openComposer, + closeModal, + ]) + return ( <View style={[styles.ctrls, style]}> <TouchableOpacity @@ -179,7 +203,9 @@ export function PostCtrls({ {big ? undefined : ( <PostDropdownBtn testID="postDropdownBtn" - post={post} + postAuthor={post.author} + postCid={post.cid} + postUri={post.uri} record={record} style={styles.ctrlPad} /> @@ -189,6 +215,8 @@ export function PostCtrls({ </View> ) } +PostCtrls = memo(PostCtrls) +export {PostCtrls} const styles = StyleSheet.create({ ctrls: { diff --git a/src/view/com/util/post-ctrls/RepostButton.tsx b/src/view/com/util/post-ctrls/RepostButton.tsx index 1d34a88ab..620852d8e 100644 --- a/src/view/com/util/post-ctrls/RepostButton.tsx +++ b/src/view/com/util/post-ctrls/RepostButton.tsx @@ -1,4 +1,4 @@ -import React, {useCallback} from 'react' +import React, {memo, useCallback} from 'react' import {StyleProp, StyleSheet, TouchableOpacity, ViewStyle} from 'react-native' import {RepostIcon} from 'lib/icons' import {s, colors} from 'lib/styles' @@ -17,13 +17,13 @@ interface Props { onQuote: () => void } -export const RepostButton = ({ +let RepostButton = ({ isReposted, repostCount, big, onRepost, onQuote, -}: Props) => { +}: Props): React.ReactNode => { const theme = useTheme() const {openModal} = useModalControls() const requireAuth = useRequireAuth() @@ -80,6 +80,8 @@ export const RepostButton = ({ </TouchableOpacity> ) } +RepostButton = memo(RepostButton) +export {RepostButton} const styles = StyleSheet.create({ control: { |