Page MenuHomePhabricator

D7760.diff
No OneTemporary

D7760.diff

diff --git a/native/cpp/CommonCpp/NativeModules/CommUtilsModule.h b/native/cpp/CommonCpp/NativeModules/CommUtilsModule.h
--- a/native/cpp/CommonCpp/NativeModules/CommUtilsModule.h
+++ b/native/cpp/CommonCpp/NativeModules/CommUtilsModule.h
@@ -29,6 +29,8 @@
readBufferFromFile(jsi::Runtime &rt, jsi::String path) override;
virtual jsi::String
base64EncodeBuffer(jsi::Runtime &rt, jsi::Object data) override;
+ virtual jsi::Object
+ base64DecodeBuffer(jsi::Runtime &rt, jsi::String base64) override;
virtual jsi::String sha256(jsi::Runtime &rt, jsi::Object data) override;
public:
diff --git a/native/cpp/CommonCpp/NativeModules/CommUtilsModule.cpp b/native/cpp/CommonCpp/NativeModules/CommUtilsModule.cpp
--- a/native/cpp/CommonCpp/NativeModules/CommUtilsModule.cpp
+++ b/native/cpp/CommonCpp/NativeModules/CommUtilsModule.cpp
@@ -113,6 +113,23 @@
return jsi::String::createFromUtf8(rt, base64);
}
+jsi::Object
+CommUtilsModule::base64DecodeBuffer(jsi::Runtime &rt, jsi::String base64) {
+ auto bytes = Base64::decode(base64.utf8(rt));
+ auto size = bytes.size();
+
+ auto arrayBuffer =
+ rt.global()
+ .getPropertyAsFunction(rt, "ArrayBuffer")
+ // ArrayBuffer constructor takes one parameter: byte length
+ .callAsConstructor(rt, {static_cast<double>(size)})
+ .asObject(rt)
+ .getArrayBuffer(rt);
+
+ memcpy(arrayBuffer.data(rt), bytes.data(), size);
+ return std::move(arrayBuffer);
+}
+
jsi::String CommUtilsModule::sha256(jsi::Runtime &rt, jsi::Object data) {
auto arrayBuffer = data.getArrayBuffer(rt);
auto inputPtr = arrayBuffer.data(rt);
diff --git a/native/cpp/CommonCpp/_generated/utilsJSI-generated.cpp b/native/cpp/CommonCpp/_generated/utilsJSI-generated.cpp
--- a/native/cpp/CommonCpp/_generated/utilsJSI-generated.cpp
+++ b/native/cpp/CommonCpp/_generated/utilsJSI-generated.cpp
@@ -21,6 +21,9 @@
static jsi::Value __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_base64EncodeBuffer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<CommUtilsModuleSchemaCxxSpecJSI *>(&turboModule)->base64EncodeBuffer(rt, args[0].asObject(rt));
}
+static jsi::Value __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_base64DecodeBuffer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ return static_cast<CommUtilsModuleSchemaCxxSpecJSI *>(&turboModule)->base64DecodeBuffer(rt, args[0].asString(rt));
+}
static jsi::Value __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_sha256(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast<CommUtilsModuleSchemaCxxSpecJSI *>(&turboModule)->sha256(rt, args[0].asObject(rt));
}
@@ -30,6 +33,7 @@
methodMap_["writeBufferToFile"] = MethodMetadata {2, __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_writeBufferToFile};
methodMap_["readBufferFromFile"] = MethodMetadata {1, __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_readBufferFromFile};
methodMap_["base64EncodeBuffer"] = MethodMetadata {1, __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_base64EncodeBuffer};
+ methodMap_["base64DecodeBuffer"] = MethodMetadata {1, __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_base64DecodeBuffer};
methodMap_["sha256"] = MethodMetadata {1, __hostFunction_CommUtilsModuleSchemaCxxSpecJSI_sha256};
}
diff --git a/native/cpp/CommonCpp/_generated/utilsJSI.h b/native/cpp/CommonCpp/_generated/utilsJSI.h
--- a/native/cpp/CommonCpp/_generated/utilsJSI.h
+++ b/native/cpp/CommonCpp/_generated/utilsJSI.h
@@ -23,6 +23,7 @@
virtual jsi::Value writeBufferToFile(jsi::Runtime &rt, jsi::String path, jsi::Object data) = 0;
virtual jsi::Value readBufferFromFile(jsi::Runtime &rt, jsi::String path) = 0;
virtual jsi::String base64EncodeBuffer(jsi::Runtime &rt, jsi::Object data) = 0;
+ virtual jsi::Object base64DecodeBuffer(jsi::Runtime &rt, jsi::String base64) = 0;
virtual jsi::String sha256(jsi::Runtime &rt, jsi::Object data) = 0;
};
@@ -69,6 +70,14 @@
return bridging::callFromJs<jsi::String>(
rt, &T::base64EncodeBuffer, jsInvoker_, instance_, std::move(data));
}
+ jsi::Object base64DecodeBuffer(jsi::Runtime &rt, jsi::String base64) override {
+ static_assert(
+ bridging::getParameterCount(&T::base64DecodeBuffer) == 2,
+ "Expected base64DecodeBuffer(...) to have 2 parameters");
+
+ return bridging::callFromJs<jsi::Object>(
+ rt, &T::base64DecodeBuffer, jsInvoker_, instance_, std::move(base64));
+ }
jsi::String sha256(jsi::Runtime &rt, jsi::Object data) override {
static_assert(
bridging::getParameterCount(&T::sha256) == 2,
diff --git a/native/schema/CommUtilsModuleSchema.js b/native/schema/CommUtilsModuleSchema.js
--- a/native/schema/CommUtilsModuleSchema.js
+++ b/native/schema/CommUtilsModuleSchema.js
@@ -12,6 +12,7 @@
+writeBufferToFile: (path: string, data: JSIArrayBuffer) => Promise<void>;
+readBufferFromFile: (path: string) => Promise<JSIArrayBuffer>;
+base64EncodeBuffer: (data: JSIArrayBuffer) => string;
+ +base64DecodeBuffer: (base64: string) => JSIArrayBuffer;
// crypto utils
+sha256: (data: JSIArrayBuffer) => string;
}
@@ -21,6 +22,7 @@
+writeBufferToFile: (path: string, data: ArrayBuffer) => Promise<void>;
+readBufferFromFile: (path: string) => Promise<ArrayBuffer>;
+base64EncodeBuffer: (data: ArrayBuffer) => string;
+ +base64DecodeBuffer: (base64: string) => ArrayBuffer;
+sha256: (data: ArrayBuffer) => string;
}

File Metadata

Mime Type
text/plain
Expires
Wed, Dec 4, 12:52 AM (5 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2609707
Default Alt Text
D7760.diff (5 KB)

Event Timeline