Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
RCTImageLoader: Use RCTModuleRegistry to load loaders/decoders
Summary: ## Context A React Native application can configure its RCTImageLoader by initializing it with two different sets of objects: - id<RCTImageURLLoader> - id<RCTImageDataDecoder> Therefore, RCTImageLoader supports this initializer: ``` - (instancetype)initWithRedirectDelegate:(id<RCTImageRedirectProtocol>)redirectDelegate loadersProvider:(NSArray<id<RCTImageURLLoader>> * (^)(void))getLoaders decodersProvider:(NSArray<id<RCTImageDataDecoder>> * (^)(void))getHandlers ``` Right now, both the id<RCTImageURLLoader>s and id<RCTImageDataDecoder>s are NativeModules. So, they need to be loaded using the Bridge/TurboModuleManager. ## Problem The method [that constructs RCTImageLoader](https://www.internalfb.com/code/fbsource/[6530647879a5e6d5edcfad029b39879c87e97bb3]/fbobjc/Apps/Wilde/FBReactModule2/FBReactModuleAPI/FBReactModuleAPI/FBReactModule.mm?lines=1462-1469) is shared between bridge mode and bridgeless mode. So, the shared constructor needs to know what infra to use to load the loaders/decoders: the TurboModuleManager, when called from a bridgeless context; the bridge, when called from a bridge context. There's no easy way to let this shared constructor know what context it's being called from. We could fork the constructor, but that's not very clean. ## Changes In this refactor, RCTImageLoader gives its loadersProvider and decodersProvider its RCTModuleRegistry. If the module was instantiated in bridgeless mode, RCTModuleRegistry will use the TurboModuleManager. If the module was instantiated in bridge mode, RCTModuleRegistry will use the bridge. Using RCTModuleRegistry allows these two blocks to load the RCTImageURLLoaders and RCTImageDataDecoder from correct infra, in both contexts. Changelog: [iOS][Changed] - Give RCTImageURLLoader's loader/decoder provider blocks RCTModuleRegistry Reviewed By: PeteTheHeat Differential Revision: D28012999 fbshipit-source-id: 09c787923b57bbf72aff95b504f88ee1f2f44283
- Loading branch information