Fix loading from Metro in Bridgeless mode (#29453)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/29453

Problem Statement: A native module needs to call a function on `ReactInstance` (in this case `loadScript`). Typically, this is handled by the bridge.
Current Bridgeless Solution: Create a new protocol (in this case `RCTJSScriptLoaderModule`) which lets a block be passed in TM init to forward the method call to `ReactInstance`. This is the best thing I could think of right now.

Changelog:[Internal]

Reviewed By: RSNara

Differential Revision: D22512748

fbshipit-source-id: e6559279b6e299e17d1199407129ad3902c41e6b
This commit is contained in:
Peter Argany
2020-07-23 17:11:32 -07:00
committed by Facebook GitHub Bot
parent c9f869f9c7
commit 448db78a88
3 changed files with 52 additions and 10 deletions
+18
View File
@@ -0,0 +1,18 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
@class RCTSource;
/**
* This protocol should be adopted when a turbo module needs to tell React Native to load a script.
* In bridge-less React Native, it is a replacement for [_bridge loadAndExecuteSplitBundleURL:].
*/
@protocol RCTJSScriptLoaderModule <NSObject>
@property (nonatomic, copy, nonnull) void (^loadScript)(RCTSource *source);
@end