mattermost-mobile/patches/react-native-reanimated+2.10.0.patch
Elias Nahum 8137241f12
[V1] update deps (#6666)
* v1 update dependencies

* fix eslint

* update ci node version

* Fix detox and jest expect imports

* update gradle memory settings

* QA feedback

* android executor xlarge

Co-authored-by: Joseph Baylon <joseph.baylon@mattermost.com>
2022-10-13 08:40:43 -03:00

60 lines
2.6 KiB
Diff

diff --git a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
index d8befd8..c7aa9e9 100644
--- a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
+++ b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
@@ -148,6 +148,9 @@ export const setUpTests = (userConfig = {}) => {
let expect;
try {
expect = require('expect');
+ if (!expect.extend) {
+ throw new Error('expect does not have extend')
+ }
}
catch (_) {
// for Jest in version 28+
diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
index 1cf0c3f..a242e4b 100644
--- a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
+++ b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
@@ -195,6 +195,7 @@ export default function createAnimatedComponent(
_isFirstRender = true;
animatedStyle: { value: StyleProps } = { value: {} };
initialStyle = {};
+ _lastSentStyle?: StyleProps;
sv: SharedValue<null | Record<string, unknown>> | null;
_propsAnimated?: PropsAnimated;
_component: ComponentRef | null = null;
@@ -580,16 +581,33 @@ export default function createAnimatedComponent(
_filterNonAnimatedStyle(inputStyle: StyleProps) {
const style: StyleProps = {};
+ let changed = false;
for (const key in inputStyle) {
const value = inputStyle[key];
if (!hasAnimatedNodes(value)) {
style[key] = value;
+ changed = changed || style[key] !== this._lastSentStyle?.[key];
} else if (value instanceof AnimatedValue) {
// if any style in animated component is set directly to the `Value` we set those styles to the first value of `Value` node in order
// to avoid flash of default styles when `Value` is being asynchrounously sent via bridge and initialized in the native side.
style[key] = value._startingValue;
+ changed = changed || style[key] !== this._lastSentStyle?.[key];
}
}
+ if (!changed) {
+ const inputKeys = new Set(Object.keys(inputStyle));
+ let equalKeys = true;
+ for (const key in this._lastSentStyle) {
+ if (!inputKeys.has(key)) {
+ equalKeys = false;
+ break;
+ }
+ }
+ if (equalKeys) {
+ return this._lastSentStyle;
+ }
+ }
+ this._lastSentStyle = style;
return style;
}