diff --git a/demo/src/screens/__tests__/AvatarScreen.spec.js b/demo/src/screens/__tests__/AvatarScreen.spec.js
index a4d3be50bb..76db71181a 100644
--- a/demo/src/screens/__tests__/AvatarScreen.spec.js
+++ b/demo/src/screens/__tests__/AvatarScreen.spec.js
@@ -1,5 +1,5 @@
import React from 'react';
-import renderer from 'react-test-renderer';
+import renderer, {act} from 'react-test-renderer';
describe('AvatarScreen', () => {
let AvatarScreen;
@@ -9,7 +9,14 @@ describe('AvatarScreen', () => {
});
it('renders screen', () => {
- const tree = renderer.create().toJSON();
+ let testRenderer;
+ act(() => {
+ testRenderer = renderer.create();
+ });
+ const tree = testRenderer.toJSON();
expect(tree).toMatchSnapshot();
+ act(() => {
+ testRenderer.unmount();
+ });
});
});
diff --git a/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap b/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap
index 3dda40d4bd..b416eb5cff 100644
--- a/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap
+++ b/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap
@@ -1466,10 +1466,9 @@ exports[`AvatarScreen renders screen 1`] = `
assetGroup="icons"
onError={[Function]}
onLoad={[Function]}
- onLoadStart={[Function]}
source={
{
- "uri": "https://static.pexels.com/photos/60628/flower-garden-blue-sky-hokkaido-japan-60628.jpeg",
+ "uri": "https://lh3.googleusercontent.com/-CMM0GmT5tiI/AAAAAAAAAAI/AAAAAAAAAAA/-o9gKbC6FVo/s181-c/111308920004613908895.jpg",
}
}
style={
diff --git a/demo/src/screens/componentScreens/AvatarsScreen.tsx b/demo/src/screens/componentScreens/AvatarsScreen.tsx
index 37d9cbe627..2a699a6146 100644
--- a/demo/src/screens/componentScreens/AvatarsScreen.tsx
+++ b/demo/src/screens/componentScreens/AvatarsScreen.tsx
@@ -43,7 +43,7 @@ const examples = [
size: 60,
animate: true,
imageProps: {animationDuration: 1000},
- source: {uri: 'https://static.pexels.com/photos/60628/flower-garden-blue-sky-hokkaido-japan-60628.jpeg'}
+ source: {uri: 'https://lh3.googleusercontent.com/-CMM0GmT5tiI/AAAAAAAAAAI/AAAAAAAAAAA/-o9gKbC6FVo/s181-c/111308920004613908895.jpg'}
},
{
title: 'Big pimple',
diff --git a/src/components/animatedImage/index.tsx b/src/components/animatedImage/index.tsx
index defc4ea8a0..7c5767e03a 100644
--- a/src/components/animatedImage/index.tsx
+++ b/src/components/animatedImage/index.tsx
@@ -1,5 +1,5 @@
// TODO: consider unify this component functionality with our Image component
-import React, {useState, useCallback, useMemo} from 'react';
+import React, {useState, useCallback, useMemo, useEffect} from 'react';
import {StyleSheet, StyleProp, ViewStyle, NativeSyntheticEvent, ImageLoadEventData} from 'react-native';
import Animated, {useSharedValue, useAnimatedStyle, withTiming} from 'react-native-reanimated';
import View from '../../components/view';
@@ -51,6 +51,12 @@ const AnimatedImage = (props: AnimatedImageProps) => {
}
}, [loader]);
+ useEffect(() => {
+ setIsLoading(true);
+ propsOnLoadStart?.();
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [source]);
+
const onLoad = useCallback((event: NativeSyntheticEvent) => {
setIsLoading(false);
propsOnLoad?.(event);
@@ -62,10 +68,11 @@ const AnimatedImage = (props: AnimatedImageProps) => {
// eslint-disable-next-line react-hooks/exhaustive-deps
[setIsLoading, propsOnLoad, animationDuration]);
- const onLoadStart = useCallback(() => {
- setIsLoading(true);
- propsOnLoadStart?.();
- }, [setIsLoading, propsOnLoadStart, animationDuration]);
+ // TODO: revert to this solution when iOS is fixed (RN77 bug)
+ // const onLoadStart = useCallback(() => {
+ // setIsLoading(true);
+ // propsOnLoadStart?.();
+ // }, [setIsLoading, propsOnLoadStart, animationDuration]);
const fadeInStyle = useAnimatedStyle(() => {
return {opacity: opacity.value};
@@ -81,7 +88,7 @@ const AnimatedImage = (props: AnimatedImageProps) => {
style={_style}
source={source}
onLoad={onLoad}
- onLoadStart={onLoadStart}
+ // onLoadStart={onLoadStart}
testID={testID}
imageStyle={undefined}
/>