diff options
author | dan <dan.abramov@gmail.com> | 2023-12-12 21:50:43 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-12 13:50:43 -0800 |
commit | 5c701f8e0bced2fe26544acc04732bdc0fcd8c40 (patch) | |
tree | d0ac3658fb3c5092d8da913b75387c43d219a1b3 /src/view/com/util/post-ctrls/PostCtrls.tsx | |
parent | a5e25a7a16cdcde64628e942c073a119bc1d7a1e (diff) | |
download | voidsky-5c701f8e0bced2fe26544acc04732bdc0fcd8c40.tar.zst |
Re-rendering improvements for like/unlike (#2180)
* Add a few memos * Memo PostDropdownBtn better * More memo * More granularity * Extract PostContent * Fix a usage I missed * oops
Diffstat (limited to 'src/view/com/util/post-ctrls/PostCtrls.tsx')
-rw-r--r-- | src/view/com/util/post-ctrls/PostCtrls.tsx | 42 |
1 files changed, 35 insertions, 7 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: { |