From 635c86239f0b19a20d640f9504d1090db76014c2 Mon Sep 17 00:00:00 2001 From: karol-bisztyga Date: Tue, 16 Mar 2021 12:41:10 +0100 Subject: [PATCH 1/2] handle transform warning --- src/reanimated2/Hooks.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/reanimated2/Hooks.js b/src/reanimated2/Hooks.js index a58c8d8900b..4efc4f6d518 100644 --- a/src/reanimated2/Hooks.js +++ b/src/reanimated2/Hooks.js @@ -493,13 +493,28 @@ export function useAnimatedStyle(updater, dependencies, adapters) { // check for invalid usage of shared values in returned object let wrongKey; - const isError = Object.keys(initial).some((key) => { - const element = initial[key]; + const isObjectInvalid = (element, key) => { const result = typeof element === 'object' && element.value !== undefined; if (result) { wrongKey = key; } return result; + }; + const isError = Object.keys(initial).some((key) => { + const element = initial[key]; + let result = false; + if (key === 'transform') { + for (const transformItem of element) { + const item = Object.values(transformItem)[0]; + result = isObjectInvalid(item, key); + if (result) { + break; + } + } + } else { + result = isObjectInvalid(element, key); + } + return result; }); if (isError && wrongKey !== undefined) { throw new Error( From 120b040c32de0da6a2be97b01d1842ee14e25d43 Mon Sep 17 00:00:00 2001 From: karol-bisztyga Date: Tue, 16 Mar 2021 12:57:45 +0100 Subject: [PATCH 2/2] fix naming, make case more generic --- src/reanimated2/Hooks.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/reanimated2/Hooks.js b/src/reanimated2/Hooks.js index 4efc4f6d518..8218adeaa11 100644 --- a/src/reanimated2/Hooks.js +++ b/src/reanimated2/Hooks.js @@ -493,28 +493,33 @@ export function useAnimatedStyle(updater, dependencies, adapters) { // check for invalid usage of shared values in returned object let wrongKey; - const isObjectInvalid = (element, key) => { + const isObjectValid = (element, key) => { const result = typeof element === 'object' && element.value !== undefined; if (result) { wrongKey = key; } - return result; + return !result; }; const isError = Object.keys(initial).some((key) => { const element = initial[key]; let result = false; - if (key === 'transform') { - for (const transformItem of element) { - const item = Object.values(transformItem)[0]; - result = isObjectInvalid(item, key); - if (result) { + // a case for transform that has a format of an array of objects + if (Array.isArray(element)) { + for (const elementArrayItem of element) { + // this means unhandled format and it doesn't match the transform format + if (typeof elementArrayItem !== 'object') { + break; + } + const objectValue = Object.values(elementArrayItem)[0]; + result = isObjectValid(objectValue, key); + if (!result) { break; } } } else { - result = isObjectInvalid(element, key); + result = isObjectValid(element, key); } - return result; + return !result; }); if (isError && wrongKey !== undefined) { throw new Error(