diff options
-rw-r--r-- | src/lib/custom-animations/CountWheel.tsx | 6 | ||||
-rw-r--r-- | src/lib/custom-animations/LikeIcon.tsx | 16 | ||||
-rw-r--r-- | src/view/com/util/post-ctrls/PostCtrls.tsx | 9 |
3 files changed, 14 insertions, 17 deletions
diff --git a/src/lib/custom-animations/CountWheel.tsx b/src/lib/custom-animations/CountWheel.tsx index b4ca62c6e..b448ad227 100644 --- a/src/lib/custom-animations/CountWheel.tsx +++ b/src/lib/custom-animations/CountWheel.tsx @@ -91,15 +91,15 @@ export function CountWheel({ likeCount, big, isLiked, - isToggle, + hasBeenToggled, }: { likeCount: number big?: boolean isLiked: boolean - isToggle: boolean + hasBeenToggled: boolean }) { const t = useTheme() - const shouldAnimate = !useReducedMotion() && isToggle + const shouldAnimate = !useReducedMotion() && hasBeenToggled const shouldRoll = decideShouldRoll(isLiked, likeCount) // Incrementing the key will cause the `Animated.View` to re-render, with the newly selected entering/exiting diff --git a/src/lib/custom-animations/LikeIcon.tsx b/src/lib/custom-animations/LikeIcon.tsx index 5c736e88d..1bc48d43b 100644 --- a/src/lib/custom-animations/LikeIcon.tsx +++ b/src/lib/custom-animations/LikeIcon.tsx @@ -71,15 +71,15 @@ const circle2Keyframe = new Keyframe({ export function AnimatedLikeIcon({ isLiked, big, - isToggle, + hasBeenToggled, }: { isLiked: boolean big?: boolean - isToggle: boolean + hasBeenToggled: boolean }) { const t = useTheme() const size = big ? 22 : 18 - const shouldAnimate = !useReducedMotion() && isToggle + const shouldAnimate = !useReducedMotion() && hasBeenToggled return ( <View> @@ -95,12 +95,10 @@ export function AnimatedLikeIcon({ width={size} /> )} - {isLiked ? ( + {isLiked && shouldAnimate ? ( <> <Animated.View - entering={ - shouldAnimate ? circle1Keyframe.duration(300) : undefined - } + entering={circle1Keyframe.duration(300)} style={{ position: 'absolute', backgroundColor: s.likeColor.color, @@ -114,9 +112,7 @@ export function AnimatedLikeIcon({ }} /> <Animated.View - entering={ - shouldAnimate ? circle2Keyframe.duration(300) : undefined - } + entering={circle2Keyframe.duration(300)} style={{ position: 'absolute', backgroundColor: t.atoms.bg.backgroundColor, diff --git a/src/view/com/util/post-ctrls/PostCtrls.tsx b/src/view/com/util/post-ctrls/PostCtrls.tsx index 2cc45617f..deb4b51d8 100644 --- a/src/view/com/util/post-ctrls/PostCtrls.tsx +++ b/src/view/com/util/post-ctrls/PostCtrls.tsx @@ -107,7 +107,8 @@ let PostCtrls = ({ [t], ) as StyleProp<ViewStyle> - const [isToggleLikeIcon, setIsToggleLikeIcon] = React.useState(false) + const [hasLikeIconBeenToggled, setHasLikeIconBeenToggled] = + React.useState(false) const onPressToggleLike = React.useCallback(async () => { if (isBlocked) { @@ -119,7 +120,7 @@ let PostCtrls = ({ } try { - setIsToggleLikeIcon(true) + setHasLikeIconBeenToggled(true) if (!post.viewer?.like) { playHaptic('Light') sendInteraction({ @@ -311,13 +312,13 @@ let PostCtrls = ({ <AnimatedLikeIcon isLiked={Boolean(post.viewer?.like)} big={big} - isToggle={isToggleLikeIcon} + hasBeenToggled={hasLikeIconBeenToggled} /> <CountWheel likeCount={post.likeCount ?? 0} big={big} isLiked={Boolean(post.viewer?.like)} - isToggle={isToggleLikeIcon} + hasBeenToggled={hasLikeIconBeenToggled} /> </Pressable> </View> |