diff --git a/Libraries/Animated/NativeAnimatedHelper.js b/Libraries/Animated/NativeAnimatedHelper.js index 03af60499f..af78a8d098 100644 --- a/Libraries/Animated/NativeAnimatedHelper.js +++ b/Libraries/Animated/NativeAnimatedHelper.js @@ -53,11 +53,11 @@ const API = { NativeAnimatedModule.getValue(tag, saveValueCallback); } }, - setWaitingForIdentifier: function(id: number): void { + setWaitingForIdentifier: function(id: string): void { waitingForQueuedOperations.add(id); queueOperations = true; }, - unsetWaitingForIdentifier: function(id: number): void { + unsetWaitingForIdentifier: function(id: string): void { waitingForQueuedOperations.delete(id); if (waitingForQueuedOperations.size === 0) { diff --git a/Libraries/Animated/animations/Animation.js b/Libraries/Animated/animations/Animation.js index ef06af5e79..53967d96f9 100644 --- a/Libraries/Animated/animations/Animation.js +++ b/Libraries/Animated/animations/Animation.js @@ -24,6 +24,8 @@ export type AnimationConfig = { iterations?: number, }; +let startNativeAnimationNextId = 1; + // Important note: start() and stop() will only be called at most once. // Once an animation has been stopped or finished its course, it will // not be reused. @@ -57,8 +59,11 @@ class Animation { onEnd && onEnd(result); } __startNativeAnimation(animatedValue: AnimatedValue): void { - const arbitraryValue = Math.random(); - NativeAnimatedHelper.API.setWaitingForIdentifier(arbitraryValue); + const startNativeAnimationWaitId = `${startNativeAnimationNextId}:startAnimation`; + startNativeAnimationNextId += 1; + NativeAnimatedHelper.API.setWaitingForIdentifier( + startNativeAnimationWaitId, + ); try { animatedValue.__makeNative(); this.__nativeId = NativeAnimatedHelper.generateNewAnimationId(); @@ -71,7 +76,9 @@ class Animation { } catch (e) { throw e; } finally { - NativeAnimatedHelper.API.unsetWaitingForIdentifier(arbitraryValue); + NativeAnimatedHelper.API.unsetWaitingForIdentifier( + startNativeAnimationWaitId, + ); } } } diff --git a/Libraries/Animated/createAnimatedComponent.js b/Libraries/Animated/createAnimatedComponent.js index fa62bb3527..230aa16420 100644 --- a/Libraries/Animated/createAnimatedComponent.js +++ b/Libraries/Animated/createAnimatedComponent.js @@ -55,7 +55,7 @@ function createAnimatedComponent( _eventDetachers: Array = []; // Only to be used in this file, and only in Fabric. - _animatedComponentId: number = animatedComponentNextId++; + _animatedComponentId: string = `${animatedComponentNextId++}:animatedComponent`; _attachNativeEvents() { // Make sure to get the scrollable node for components that implement