mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Ensure NativeAnimatedHelper cannot be setup incorrectly (#37157)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37157 ## Context NativeAnimatedHelper must be set up in a very particular way: - On iOS in Bridgeless mode, it must use NativeAnimated**Turbo**Module. - Everywhere else, it must use NativeAnimatedModule. ## Problem For some unknown reason, NativeAnimatedModule was getting loaded on D44933587. ## Changes This diff makes the aformentioned error impossible. It moves the module load gating logic into the two NativeModule spec files. Changelog: [Internal] Reviewed By: philIip Differential Revision: D45292907 fbshipit-source-id: 771bf64d7b491732e8860cf704bc9c3686980e74
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c4a6c3728e
commit
fbf6a8c888
@@ -28,9 +28,7 @@ import invariant from 'invariant';
|
||||
|
||||
// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.
|
||||
const NativeAnimatedModule =
|
||||
Platform.OS === 'ios' && global.RN$Bridgeless === true
|
||||
? NativeAnimatedTurboModule
|
||||
: NativeAnimatedNonTurboModule;
|
||||
NativeAnimatedNonTurboModule ?? NativeAnimatedTurboModule;
|
||||
|
||||
let __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */
|
||||
let __nativeAnimationIdCount = 1; /* used for started animations */
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import type {TurboModule} from '../TurboModule/RCTExport';
|
||||
|
||||
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
||||
import shouldUseTurboAnimatedModule from './shouldUseTurboAnimatedModule';
|
||||
|
||||
type EndResult = {finished: boolean, ...};
|
||||
type EndCallback = (result: EndResult) => void;
|
||||
@@ -70,4 +71,7 @@ export interface Spec extends TurboModule {
|
||||
+queueAndExecuteBatchedOperations?: (operationsAndArgs: Array<any>) => void;
|
||||
}
|
||||
|
||||
export default (TurboModuleRegistry.get<Spec>('NativeAnimatedModule'): ?Spec);
|
||||
const NativeModule: ?Spec = !shouldUseTurboAnimatedModule()
|
||||
? TurboModuleRegistry.get<Spec>('NativeAnimatedModule')
|
||||
: null;
|
||||
export default NativeModule;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import type {TurboModule} from '../TurboModule/RCTExport';
|
||||
|
||||
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
|
||||
import shouldUseTurboAnimatedModule from './shouldUseTurboAnimatedModule';
|
||||
|
||||
type EndResult = {finished: boolean, ...};
|
||||
type EndCallback = (result: EndResult) => void;
|
||||
@@ -70,6 +71,8 @@ export interface Spec extends TurboModule {
|
||||
+queueAndExecuteBatchedOperations?: (operationsAndArgs: Array<any>) => void;
|
||||
}
|
||||
|
||||
export default (TurboModuleRegistry.get<Spec>(
|
||||
'NativeAnimatedTurboModule',
|
||||
): ?Spec);
|
||||
const NativeModule: ?Spec = shouldUseTurboAnimatedModule()
|
||||
? TurboModuleRegistry.get<Spec>('NativeAnimatedTurboModule')
|
||||
: null;
|
||||
|
||||
export default NativeModule;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @flow
|
||||
* @format
|
||||
*/
|
||||
|
||||
import Platform from '../Utilities/Platform';
|
||||
|
||||
function shouldUseTurboAnimatedModule(): boolean {
|
||||
return Platform.OS === 'ios' && global.RN$Bridgeless === true;
|
||||
}
|
||||
|
||||
export default shouldUseTurboAnimatedModule;
|
||||
Reference in New Issue
Block a user