From ea1e8bbd34b655a062ef13b6c2c76660ed43d31a Mon Sep 17 00:00:00 2001 From: Luna Wei Date: Wed, 2 Oct 2019 14:02:59 -0700 Subject: [PATCH] Add queryCache to ImageLoader native module Summary: [iOS] [Added] - Add definition for `queryCache` in ImageLoader This diff is related to moving RCTImageViewManager's commands to a native module, ImageLoader. Reviewed By: zackargyle, TheSavior Differential Revision: D17714521 fbshipit-source-id: 722cc17a2ebb03e72d7c080dfc4d0aa6d7440e85 --- .../FBReactNativeSpec/FBReactNativeSpec-generated.mm | 7 +++++++ .../FBReactNativeSpec/FBReactNativeSpec.h | 3 +++ Libraries/Image/NativeImageLoader.js | 3 +++ React/CoreModules/RCTImageLoader.mm | 6 ++++++ 4 files changed, 19 insertions(+) diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm index 2ea208b255..6a9618d546 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm @@ -1180,6 +1180,10 @@ namespace facebook { return static_cast(turboModule).invokeObjCMethod(rt, PromiseKind, "prefetchImage", @selector(prefetchImage:resolve:reject:), args, count); } + static facebook::jsi::Value __hostFunction_NativeImageLoaderSpecJSI_queryCache(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + return static_cast(turboModule).invokeObjCMethod(rt, PromiseKind, "queryCache", @selector(queryCache:resolve:reject:), args, count); + } + NativeImageLoaderSpecJSI::NativeImageLoaderSpecJSI(id instance, std::shared_ptr jsInvoker) : ObjCTurboModule("ImageLoader", instance, jsInvoker) { @@ -1194,6 +1198,9 @@ namespace facebook { methodMap_["prefetchImage"] = MethodMetadata {1, __hostFunction_NativeImageLoaderSpecJSI_prefetchImage}; + methodMap_["queryCache"] = MethodMetadata {1, __hostFunction_NativeImageLoaderSpecJSI_queryCache}; + + } diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h index d63adc37b0..87f92a51b0 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h @@ -1156,6 +1156,9 @@ namespace JS { - (void)prefetchImage:(NSString *)uri resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject; +- (void)queryCache:(NSArray *)uris + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject; @end namespace facebook { diff --git a/Libraries/Image/NativeImageLoader.js b/Libraries/Image/NativeImageLoader.js index 6b115c290f..be3d2a0254 100644 --- a/Libraries/Image/NativeImageLoader.js +++ b/Libraries/Image/NativeImageLoader.js @@ -22,6 +22,9 @@ export interface Spec extends TurboModule { headers: {[string]: string}, ) => Promise<$ReadOnly<{width: number, height: number}>>; +prefetchImage: (uri: string) => Promise; + +queryCache: ( + uris: Array, + ) => Promise<{[string]: 'memory' | 'disk' | 'disk/memory'}>; } export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); diff --git a/React/CoreModules/RCTImageLoader.mm b/React/CoreModules/RCTImageLoader.mm index 47e5301bd5..356ffd640f 100644 --- a/React/CoreModules/RCTImageLoader.mm +++ b/React/CoreModules/RCTImageLoader.mm @@ -996,6 +996,12 @@ RCT_EXPORT_METHOD(prefetchImage:(NSString *)uri }]; } +RCT_EXPORT_METHOD(queryCache:(NSArray *)uris + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) +{ + resolve([self getImageCacheStatus:uris]); +} @end /**