amis-rpc-design/node_modules/react-native/React/Base/RCTBundleManager.m
2023-10-07 19:42:30 +08:00

79 lines
2.1 KiB
Objective-C

/*
* 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.
*/
#import "RCTBundleManager.h"
#import "RCTAssert.h"
#import "RCTBridge+Private.h"
#import "RCTBridge.h"
@implementation RCTBundleManager {
__weak RCTBridge *_bridge;
RCTBridgelessBundleURLGetter _bridgelessBundleURLGetter;
RCTBridgelessBundleURLSetter _bridgelessBundleURLSetter;
RCTBridgelessBundleURLGetter _bridgelessBundleURLDefaultGetter;
}
- (void)setBridge:(RCTBridge *)bridge
{
_bridge = bridge;
}
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
andSetter:(RCTBridgelessBundleURLSetter)setter
andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter
{
_bridgelessBundleURLGetter = getter;
_bridgelessBundleURLSetter = setter;
_bridgelessBundleURLDefaultGetter = defaultGetter;
}
- (void)setBundleURL:(NSURL *)bundleURL
{
if (_bridge) {
_bridge.bundleURL = bundleURL;
return;
}
RCTAssert(
_bridgelessBundleURLSetter != nil,
@"RCTBundleManager: In bridgeless mode, RCTBridgelessBundleURLSetter must not be nil.");
_bridgelessBundleURLSetter(bundleURL);
}
- (NSURL *)bundleURL
{
if (_bridge) {
return _bridge.bundleURL;
}
RCTAssert(
_bridgelessBundleURLGetter != nil,
@"RCTBundleManager: In bridgeless mode, RCTBridgelessBundleURLGetter must not be nil.");
return _bridgelessBundleURLGetter();
}
- (void)resetBundleURL
{
RCTBridge *strongBridge = _bridge;
if (strongBridge) {
strongBridge.bundleURL = [strongBridge.delegate sourceURLForBridge:strongBridge];
return;
}
RCTAssert(
_bridgelessBundleURLDefaultGetter != nil,
@"RCTBundleManager: In bridgeless mode, default RCTBridgelessBundleURLGetter must not be nil.");
RCTAssert(
_bridgelessBundleURLSetter != nil,
@"RCTBundleManager: In bridgeless mode, RCTBridgelessBundleURLSetter must not be nil.");
_bridgelessBundleURLSetter(_bridgelessBundleURLDefaultGetter());
}
@end