Split NativeImageStore into iOS and Android counterparts

Summary:
Split the two specs, so that that we don't have to use Flow unions in the merged spec.

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D23800841

fbshipit-source-id: 28b67578832ebd733bd080877e4ab763c013fded
This commit is contained in:
Ramanpreet Nara authored and Facebook GitHub Bot committed 2020-09-29 14:39:37 -07:00
1 parent a7c026e667
commit ef145adb9d
10 files changed
+235 -63

No files matched your search

@@ -1610,46 +1610,72 @@ namespace facebook {
} // namespace react
} // namespace facebook
@implementation RCTCxxConvert (NativeImageStore_SpecAddImageFromBase64ErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackError:(id)json
namespace facebook {
namespace react {
static facebook::jsi::Value __hostFunction_NativeImageStoreAndroidSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "getBase64ForTag", @selector(getBase64ForTag:successCallback:errorCallback:), args, count);
}
NativeImageStoreAndroidSpecJSI::NativeImageStoreAndroidSpecJSI(const ObjCTurboModule::InitParams &params)
: ObjCTurboModule(params) {
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreAndroidSpecJSI_getBase64ForTag};
}
} // namespace react
} // namespace facebook
@implementation RCTCxxConvert (NativeImageStoreIOS_SpecGetBase64ForTagErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStoreIOS_SpecGetBase64ForTagErrorCallbackError:(id)json
{
return facebook::react::managedPointer<JS::NativeImageStore::SpecAddImageFromBase64ErrorCallbackError>(json);
return facebook::react::managedPointer<JS::NativeImageStoreIOS::SpecGetBase64ForTagErrorCallbackError>(json);
}
@end
@implementation RCTCxxConvert (NativeImageStoreIOS_SpecAddImageFromBase64ErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStoreIOS_SpecAddImageFromBase64ErrorCallbackError:(id)json
{
return facebook::react::managedPointer<JS::NativeImageStoreIOS::SpecAddImageFromBase64ErrorCallbackError>(json);
}
@end
namespace facebook {
namespace react {
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "getBase64ForTag", @selector(getBase64ForTag:successCallback:errorCallback:), args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_hasImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_hasImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "hasImageForTag", @selector(hasImageForTag:callback:), args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_removeImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_removeImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "removeImageForTag", @selector(removeImageForTag:), args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_addImageFromBase64(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_addImageFromBase64(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "addImageFromBase64", @selector(addImageFromBase64:successCallback:errorCallback:), args, count);
}
NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(const ObjCTurboModule::InitParams &params)
NativeImageStoreIOSSpecJSI::NativeImageStoreIOSSpecJSI(const ObjCTurboModule::InitParams &params)
: ObjCTurboModule(params) {
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag};
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreIOSSpecJSI_getBase64ForTag};
methodMap_["hasImageForTag"] = MethodMetadata {2, __hostFunction_NativeImageStoreSpecJSI_hasImageForTag};
methodMap_["hasImageForTag"] = MethodMetadata {2, __hostFunction_NativeImageStoreIOSSpecJSI_hasImageForTag};
methodMap_["removeImageForTag"] = MethodMetadata {1, __hostFunction_NativeImageStoreSpecJSI_removeImageForTag};
methodMap_["removeImageForTag"] = MethodMetadata {1, __hostFunction_NativeImageStoreIOSSpecJSI_removeImageForTag};
methodMap_["addImageFromBase64"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_addImageFromBase64};
methodMap_["addImageFromBase64"] = MethodMetadata {3, __hostFunction_NativeImageStoreIOSSpecJSI_addImageFromBase64};
@@ -1524,9 +1524,45 @@ namespace facebook {
};
} // namespace react
} // namespace facebook
@protocol NativeImageStoreAndroidSpec <RCTBridgeModule, RCTTurboModule>
- (void)getBase64ForTag:(NSString *)uri
successCallback:(RCTResponseSenderBlock)successCallback
errorCallback:(RCTResponseSenderBlock)errorCallback;
@end
namespace facebook {
namespace react {
/**
* ObjC++ class for module 'ImageStoreAndroid'
*/
class JSI_EXPORT NativeImageStoreAndroidSpecJSI : public ObjCTurboModule {
public:
NativeImageStoreAndroidSpecJSI(const ObjCTurboModule::InitParams &params);
};
} // namespace react
} // namespace facebook
namespace JS {
namespace NativeImageStore {
namespace NativeImageStoreIOS {
struct SpecGetBase64ForTagErrorCallbackError {
NSString *message() const;
SpecGetBase64ForTagErrorCallbackError(NSDictionary *const v) : _v(v) {}
private:
NSDictionary *_v;
};
}
}
@interface RCTCxxConvert (NativeImageStoreIOS_SpecGetBase64ForTagErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStoreIOS_SpecGetBase64ForTagErrorCallbackError:(id)json;
@end
namespace JS {
namespace NativeImageStoreIOS {
struct SpecAddImageFromBase64ErrorCallbackError {
NSString *message() const;
@@ -1537,10 +1573,10 @@ namespace JS {
}
}
@interface RCTCxxConvert (NativeImageStore_SpecAddImageFromBase64ErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackError:(id)json;
@interface RCTCxxConvert (NativeImageStoreIOS_SpecAddImageFromBase64ErrorCallbackError)
+ (RCTManagedPointer *)JS_NativeImageStoreIOS_SpecAddImageFromBase64ErrorCallbackError:(id)json;
@end
@protocol NativeImageStoreSpec <RCTBridgeModule, RCTTurboModule>
@protocol NativeImageStoreIOSSpec <RCTBridgeModule, RCTTurboModule>
- (void)getBase64ForTag:(NSString *)uri
successCallback:(RCTResponseSenderBlock)successCallback
@@ -1556,12 +1592,12 @@ namespace JS {
namespace facebook {
namespace react {
/**
* ObjC++ class for module 'ImageStore'
* ObjC++ class for module 'ImageStoreIOS'
*/
class JSI_EXPORT NativeImageStoreSpecJSI : public ObjCTurboModule {
class JSI_EXPORT NativeImageStoreIOSSpecJSI : public ObjCTurboModule {
public:
NativeImageStoreSpecJSI(const ObjCTurboModule::InitParams &params);
NativeImageStoreIOSSpecJSI(const ObjCTurboModule::InitParams &params);
};
} // namespace react
@@ -3292,7 +3328,12 @@ inline bool JS::NativeImagePickerIOS::SpecOpenSelectDialogConfig::showVideos() c
id const p = _v[@"showVideos"];
return RCTBridgingToBool(p);
}
inline NSString *JS::NativeImageStore::SpecAddImageFromBase64ErrorCallbackError::message() const
inline NSString *JS::NativeImageStoreIOS::SpecGetBase64ForTagErrorCallbackError::message() const
{
id const p = _v[@"message"];
return RCTBridgingToString(p);
}
inline NSString *JS::NativeImageStoreIOS::SpecAddImageFromBase64ErrorCallbackError::message() const
{
id const p = _v[@"message"];
return RCTBridgingToString(p);
@@ -0,0 +1,27 @@
/**
* 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.
*
* @flow strict
* @format
*/
'use strict';
import type {TurboModule} from '../TurboModule/RCTExport';
import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
export interface Spec extends TurboModule {
+getConstants: () => {||};
+getBase64ForTag: (
uri: string,
successCallback: (base64ImageData: string) => void,
errorCallback: (error: string) => void,
) => void;
}
export default (TurboModuleRegistry.getEnforcing<Spec>(
'ImageStoreManager',
): Spec);
@@ -15,21 +15,11 @@ import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
export interface Spec extends TurboModule {
+getConstants: () => {||};
// Common
+getBase64ForTag: (
uri: string,
successCallback: (base64ImageData: string) => void,
/**
* On Android, the failure callback is called with a string.
* On iOS, the failure callback is called with an error object.
*
* TODO(T47527939) Unify this inconsistency
*/
errorCallback: (error: {|message: string|} | string) => void,
errorCallback: (error: {|message: string|}) => void,
) => void;
// iOS-only
+hasImageForTag: (uri: string, callback: (hasImage: boolean) => void) => void;
+removeImageForTag: (uri: string) => void;
+addImageFromBase64: (
+2 -2
View File
@@ -22,7 +22,7 @@
static NSString *const RCTImageStoreURLScheme = @"rct-image-store";
@interface RCTImageStoreManager() <NativeImageStoreSpec>
@interface RCTImageStoreManager() <NativeImageStoreIOSSpec>
@end
@implementation RCTImageStoreManager
@@ -236,7 +236,7 @@ RCT_EXPORT_METHOD(addImageFromBase64:(NSString *)base64String
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params
{
return std::make_shared<facebook::react::NativeImageStoreSpecJSI>(params);
return std::make_shared<facebook::react::NativeImageStoreIOSSpecJSI>(params);
}
@end
@@ -0,0 +1,30 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*
* <p>Generated by an internal genrule from Flow types.
*
* @generated
* @nolint
*/
package com.facebook.fbreact.specs;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactModuleWithSpec;
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
public abstract class NativeImageStoreAndroidSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule {
public NativeImageStoreAndroidSpec(ReactApplicationContext reactContext) {
super(reactContext);
}
@ReactMethod
public abstract void getBase64ForTag(String uri, Callback successCallback,
Callback errorCallback);
}
@@ -0,0 +1,40 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*
* <p>Generated by an internal genrule from Flow types.
*
* @generated
* @nolint
*/
package com.facebook.fbreact.specs;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactModuleWithSpec;
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
public abstract class NativeImageStoreIOSSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule {
public NativeImageStoreIOSSpec(ReactApplicationContext reactContext) {
super(reactContext);
}
@ReactMethod
public abstract void addImageFromBase64(String base64ImageData, Callback successCallback,
Callback errorCallback);
@ReactMethod
public abstract void getBase64ForTag(String uri, Callback successCallback,
Callback errorCallback);
@ReactMethod
public abstract void hasImageForTag(String uri, Callback callback);
@ReactMethod
public abstract void removeImageForTag(String uri);
}
@@ -1416,36 +1416,56 @@ namespace facebook {
namespace react {
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreAndroidSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "getBase64ForTag", "(Ljava/lang/String;Lcom/facebook/react/bridge/Callback;Lcom/facebook/react/bridge/Callback;)V", args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_hasImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
NativeImageStoreAndroidSpecJSI::NativeImageStoreAndroidSpecJSI(const JavaTurboModule::InitParams &params)
: JavaTurboModule(params) {
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreAndroidSpecJSI_getBase64ForTag};
}
} // namespace react
} // namespace facebook
namespace facebook {
namespace react {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_getBase64ForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "getBase64ForTag", "(Ljava/lang/String;Lcom/facebook/react/bridge/Callback;Lcom/facebook/react/bridge/Callback;)V", args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_hasImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "hasImageForTag", "(Ljava/lang/String;Lcom/facebook/react/bridge/Callback;)V", args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_removeImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_removeImageForTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "removeImageForTag", "(Ljava/lang/String;)V", args, count);
}
static facebook::jsi::Value __hostFunction_NativeImageStoreSpecJSI_addImageFromBase64(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
static facebook::jsi::Value __hostFunction_NativeImageStoreIOSSpecJSI_addImageFromBase64(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "addImageFromBase64", "(Ljava/lang/String;Lcom/facebook/react/bridge/Callback;Lcom/facebook/react/bridge/Callback;)V", args, count);
}
NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(const JavaTurboModule::InitParams &params)
NativeImageStoreIOSSpecJSI::NativeImageStoreIOSSpecJSI(const JavaTurboModule::InitParams &params)
: JavaTurboModule(params) {
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag};
methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreIOSSpecJSI_getBase64ForTag};
methodMap_["hasImageForTag"] = MethodMetadata {2, __hostFunction_NativeImageStoreSpecJSI_hasImageForTag};
methodMap_["hasImageForTag"] = MethodMetadata {2, __hostFunction_NativeImageStoreIOSSpecJSI_hasImageForTag};
methodMap_["removeImageForTag"] = MethodMetadata {1, __hostFunction_NativeImageStoreSpecJSI_removeImageForTag};
methodMap_["removeImageForTag"] = MethodMetadata {1, __hostFunction_NativeImageStoreIOSSpecJSI_removeImageForTag};
methodMap_["addImageFromBase64"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_addImageFromBase64};
methodMap_["addImageFromBase64"] = MethodMetadata {3, __hostFunction_NativeImageStoreIOSSpecJSI_addImageFromBase64};
@@ -440,12 +440,26 @@ namespace facebook {
namespace facebook {
namespace react {
/**
* C++ class for module 'ImageStore'
* C++ class for module 'ImageStoreAndroid'
*/
class JSI_EXPORT NativeImageStoreSpecJSI : public JavaTurboModule {
class JSI_EXPORT NativeImageStoreAndroidSpecJSI : public JavaTurboModule {
public:
NativeImageStoreSpecJSI(const JavaTurboModule::InitParams &params);
NativeImageStoreAndroidSpecJSI(const JavaTurboModule::InitParams &params);
};
} // namespace react
} // namespace facebook
namespace facebook {
namespace react {
/**
* C++ class for module 'ImageStoreIOS'
*/
class JSI_EXPORT NativeImageStoreIOSSpecJSI : public JavaTurboModule {
public:
NativeImageStoreIOSSpecJSI(const JavaTurboModule::InitParams &params);
};
} // namespace react
@@ -12,7 +12,7 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.util.Base64;
import android.util.Base64OutputStream;
import com.facebook.fbreact.specs.NativeImageStoreSpec;
import com.facebook.fbreact.specs.NativeImageStoreAndroidSpec;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.GuardedAsyncTask;
import com.facebook.react.bridge.ReactApplicationContext;
@@ -25,7 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
@ReactModule(name = ImageStoreManager.NAME)
public class ImageStoreManager extends NativeImageStoreSpec {
public class ImageStoreManager extends NativeImageStoreAndroidSpec {
public static final String NAME = "ImageStoreManager";
private static final int BUFFER_SIZE = 8192;
@@ -105,20 +105,4 @@ public class ImageStoreManager extends NativeImageStoreSpec {
// shhh
}
}
@Override
public void hasImageForTag(String uri, Callback callback) {
// iOS only
}
@Override
public void removeImageForTag(String uri) {
// iOS only
}
@Override
public void addImageFromBase64(
String base64ImageData, Callback successCallback, Callback errorCallback) {
// iOS only
}
}