From e7f6bca63dd533109db605d9f657e74c5fa21e04 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 8 Nov 2024 18:04:16 +0000 Subject: [PATCH] Fix a huge memory issue due to expo/expo#24894 --- .../ImageItem/ImageItem.android.tsx | 41 +++++++++---------- .../components/ImageItem/ImageItem.ios.tsx | 37 ++++++++--------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx index 5a99de27cc..04693ca1e5 100644 --- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx +++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx @@ -31,8 +31,6 @@ import { TransformMatrix, } from '../../transforms' -const AnimatedImage = Animated.createAnimatedComponent(Image) - const MIN_SCREEN_ZOOM = 2 const MAX_ORIGINAL_IMAGE_ZOOM = 2 @@ -344,14 +342,10 @@ const ImageItem = ({ } }) - const type = imageSrc.type - const borderRadius = - type === 'circle-avi' ? 1e5 : type === 'rect-avi' ? 20 : 0 const imageStyle = useAnimatedStyle(() => { const {cropContentTransform} = transforms.value return { flex: 1, - borderRadius, transform: cropContentTransform, } }) @@ -371,13 +365,17 @@ const ImageItem = ({ }, ) + const type = imageSrc.type + const borderRadius = + type === 'circle-avi' ? 1e5 : type === 'rect-avi' ? 20 : 0 + return ( - + {showLoader && ( )} - - setHasLoaded(false)} - style={imageStyle} - accessibilityHint="" - accessibilityIgnoresInvertColors - cachePolicy="memory" - /> + + + setHasLoaded(false)} + style={{flex: 1, borderRadius}} + accessibilityHint="" + accessibilityIgnoresInvertColors + cachePolicy="memory" + /> + diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx index efe6a2eef0..8c1f69a720 100644 --- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx +++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx @@ -30,8 +30,6 @@ import { Transform, } from '../../@types' -const AnimatedImage = Animated.createAnimatedComponent(Image) - const MAX_ORIGINAL_IMAGE_ZOOM = 2 const MIN_SCREEN_ZOOM = 2 @@ -167,13 +165,9 @@ const ImageItem = ({ } }) - const type = imageSrc.type - const borderRadius = - type === 'circle-avi' ? 1e5 : type === 'rect-avi' ? 20 : 0 const imageStyle = useAnimatedStyle(() => { const {cropContentTransform} = transforms.value return { - borderRadius, transform: cropContentTransform, width: '100%', aspectRatio: imageAspect, @@ -195,6 +189,10 @@ const ImageItem = ({ }, ) + const type = imageSrc.type + const borderRadius = + type === 'circle-avi' ? 1e5 : type === 'rect-avi' ? 20 : 0 + return ( )} - setHasLoaded(true)} - cachePolicy="memory-disk" - /> + + setHasLoaded(true)} + /> +